我有一个用.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结果?
答案 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之后通过。