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

use*_*673 4 .net c# asp.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结果?

Hab*_*bib 5

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

您应该看到:.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之后通过.