在.net Framework 4.6.1中完成的应用程序能否在.net Framework 4.5中安全运行

时间:2019-05-04 06:18:52

标签: asp.net windows-server-2012 .net-framework-version

我确实在.net Framework 4.6.1中创建了一个应用程序,该应用程序在localhost中可以完美运行。但是在服务器(Windows Server 2012)中,我们拥有.net Framework 4.5。

我们应该将其升级到框架4.7还是可以在当前框架中使用?

2 个答案:

答案 0 :(得分:3)

这取决于您是否使用任何new features introduced in .NET 4.5.1 or later

为确保兼容性,您应该

  1. 将目标系统升级到(至少)4.6.1或
  2. 将项目的“ 目标框架”设置减少至(最多)4.5:

    project settings screenshot

选项1将确保您在开发中使用的所有功能在目标系统上均可用。

如果使用的是.NET 4.5中不可用的功能,则选项2将确保您收到编译时错误。

答案 1 :(得分:-1)

.NET Framework 4.5和更高版本与使用.NET Framework早期版本构建的应用程序向后兼容。换句话说,在.NET Framework 4.5及更高版本上,无需修改即可使用以前版本构建的应用程序和组件运行。但是,默认情况下,应用程序在为其开发的公共语言运行时版本上运行,因此您可能必须提供一个配置文件,以使您的应用程序可以在.NET Framework 4.5或更高版本上运行。

实际上,.NET Framework中似乎无关紧要的更改和编程技术的更改会破坏这种兼容性。例如,.NET Framework 4.5中的性能改进可以暴露早期版本中没有出现的竞争条件。同样,使用到.NET Framework程序集的硬编码路径,与.NET Framework的特定版本进行相等性比较以及通过使用反射获得私有字段的值也不是向后兼容的做法。

此外,每个.NET Framework版本均包含错误修复和与安全相关的更改,这些更改可能会影响某些应用程序和组件的兼容性。 因此,我建议您将其升级到框架4.7。

有关更多详细信息,请检查: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/version-compatibility