在旧的.NET版本中编译的程序集在较新的.NET版本中运行,会改变行为吗?

时间:2013-05-04 15:38:58

标签: c# asp.net .net winforms .net-4.5

我有一个用.NET 3.5编译的程序集。我无法在.NET 4.5中重新编译它,因为它在其他仍在运行.NET 3.5的应用程序中使用。当我在运行.NET 4.5的应用程序中使用程序集时,会将程序集视为在.NET 4.5而不是.NET 3.5中运行吗?我在.NET 4.5中都有一个WinForms应用程序和一个WebForms应用程序。如果.NET 3.5和.NET 4.5之间的行为发生了变化,程序集将返回4.5结果?

1 个答案:

答案 0 :(得分:5)

通常.Net框架是向后兼容的,因此执行.Net 3.5中开发的程序集不应该是4.5的问题。

您应该看到:Version Compatibility in the .NET Framework

  

.NET Framework 4.5向后兼容应用程序   使用.NET Framework 1.1,2.0,3.0,3.5和4构建。   换句话说,使用以前构建的应用程序和组件   .NET Framework的各个版本都可以在.NET Framework 4.5上运行。

但也可能存在问题,如文章中提到的那样:

  

然而,在实践中,这种兼容性可以通过表面来打破   .NET Framework中的无关紧要的更改和更改   编程技巧。例如,性能改进了   .NET Framework 4可以暴露未发生的竞争条件   早期版本。同样,使用.NET Framework的硬编码路径   程序集,执行与特定的相等比较   .NET Framework的版本,并获取私有的值   使用反射的字段不是向后兼容的做法。在   此外,每个版本的.NET Framework都包含错误修复和   与安全相关的更改可能会影响某些内容的兼容性   应用程序和组件。

最好的方法是确保您的测试用例在包含3.5的dll之后通过。