在Framework 4.0运行时上加载Framework 3.5库

时间:2011-09-01 10:50:17

标签: .net-3.5 .net-4.0 compatibility

如果我创建可以在.NET Framework 3.5或.NET Framework 4.0安装的运行时运行的库,我想知道我需要记住什么。 我想要一些像Enterprise Library那样的向后兼容性(但之前只有3.5版本)。我看到他们已经在3.5上编译了库,但是能够在4.0应用程序上运行。我希望通过 MINIMAL 项目维护工作获得相同的效果。 我希望我的问题很清楚。如果没有,请通过评论告诉我。

编辑: 我发现如果我将app.config设置为识别2.0和4.0运行时,我的EXE实际上在任何运行时都运行良好。我通过单独卸载.NET 3.5和4.0来测试它,看看每个是否可以单独运行它。使用每个框架可能需要考虑一些事情,但对于小工具类型的应用程序和库,我认为应该没问题。有人不同意吗?

由于

2 个答案:

答案 0 :(得分:1)

MS有一篇关于此http://msdn.microsoft.com/en-us/library/ms171868.aspx

的文章

进程内并行执行 此功能使应用程序能够在同一进程中加载​​和启动多个版本的.NET Framework。例如,您可以运行在同一进程中加载​​基于.NET Framework 2.0 SP1的加载项(或组件)和基于.NET Framework 4的加载项的应用程序。较旧的组件继续使用较旧的.NET Framework版本,而新组件使用新的.NET Framework版本。有关更多信息,请参阅进程内并行执行。

答案 1 :(得分:1)

运行时向后兼容。因此4.0运行时可以运行基于3.5和2.0的程序集,但它不是相反的方式。如果您尝试在2.0运行时运行4.0程序集,则会出现BadImageFormatException,因为2.0运行时无法加载4.0程序集。并行执行也是另一种选择,但适用于运行时的更高版本(我相信4.0+),最后我听说微软仍在研究可以隔离的未来运行时版本。您不必编译程序集的多个版本,但是您需要记住应用程序所需的最小运行时版本。例如,如果您有一个需要.NET 3.5的模块,那么它应该是整个应用程序所需的最小运行时间。