.NET版本是否向后兼容?

kb5ga3dv  于 2023-02-10  发布在  .NET
关注(0)|答案(3)|浏览(717)

我正在处理一个C#代码,它的目标框架是.NET 4.6,我正在尝试解决执行过程中出现的一些问题。该代码在一些客户端上运行,有一个.NET 3.5版本。我的问题是,.NET 4.6是否支持追溯兼容性,如果是这样,是否应该更明智地有一个一致的框架版本(目标版本与客户端版本相同)?

6tr1vspr

6tr1vspr1#

TL;DR:基本上,您可以在新的基础上运行旧的,但不能在旧的基础上运行新的。

DotNet 4.6+是向后兼容的,你可以运行一个应用程序与DotNet 3.5等,但你不能运行一个应用程序与DotNet 4.6+,而使用旧的安装框架,如3.5或其他。
想象一下,你有一台windows10电脑,你想安装一个为windows8甚至是XP或更老版本构建的应用程序,现代windows有兼容层,这是运行或安装程序所必需的。
现在你/你的客户正在做的基本上是采取一个专门为Windows 10设计的应用程序,并试图运行它在Windows XP或95等,这不会工作,因为兼容层不到位,以支持“未来”。没有人可以预见的新功能和API的,他们可能会添加,所以应用程序是不兼容的旧Windows。

如果您的目标是.NET 4.6,那么请选择.NET 4.6。

不要指望你的代码/应用能兼容任何更低的版本,如果你确实需要,你必须针对特定的版本。它有自己的缺点,因为新的方法/做事方式和许多库你可以使用不适用/不兼容。
您可以更新所有代码以使用4.6或更高版本,或者将代码库切换到目标3.5并接受其缺点。

2q5ifsrm

2q5ifsrm2#

从向后兼容性
.NET Framework 4.5及更高版本与使用早期版本的.NET Framework生成的应用程序向后兼容。换句话说,使用早期版本生成的应用程序和组件无需修改即可在.NET Framework 4.5及更高版本上运行。
在您的情况下,应用是在.Net Framework 4.6上生成的,而客户端计算机上的平台是3.5版本。可能会出现一些问题,因为应用需要的版本比它运行的平台新。

uubf1zoe

uubf1zoe3#

Windows Server 2016中包含.NET Framework 4.6 was included with Windows 10 from version 1507版和.NET Framework 4.6.2版。如果你的客户端运行的是这两个版本或更高版本的Windows,则无需安装任何内容即可运行你的.NET Framework 4.6应用,并且即使你安装了.NET Framework 3.5,它也不会在其上运行。
如果你使用的是比这更老的Windows版本,并且没有安装.NET Framework 4.6或更高版本,我不会期望它能运行。

相关问题