我有一个c#项目我在VS2010中从.net 3.5转换为.net 4.0。它引用了其他第三方dll,它们的运行时版本为v2.0.50727。
这怎么可能?在建造或运行时,我有点期待警告或破损,但我没有。如果我编译的.net 4项目使用.net v4.0.30319运行时运行,它是否运行带有.net 2.0.50727运行时的引用dll?因此,我仍然需要安装旧版本的.net?
或者是引用的dll是否在v4.0.30319运行时中运行?
答案 0 :(得分:5)
不,这只是自动生效。 v4 CLR对旧的v2程序集引用没有任何问题,它将它们一对一地转换为这些程序集的v4版本。或者,如果这是一个非框架程序集,那么没有什么神奇的发生,它仍然可以读取v2程序集的元数据。
相当必要的是,如果不起作用,很少有程序员会选择升级到4.0版本。有一些孤立的案例,4.0中的过度错误修复导致了不同的行为,但它们非常罕见。
答案 1 :(得分:0)
从commented question开始防止链接腐烂:
“是的,您可以从更高框架版本的应用程序引用2.0类库,但不能反过来。
您随时可以查看.NET Version Compatibility。 (有some caveats移动到4,但一般来说你应该没事。) - 布拉德克里斯蒂娜
你可能会看到的任何问题都会出现在2之前的版本中。(虽然我听说过去4是重写,所以我不确定他们是如何处理向后兼容性的。我相信他们必须保持它很安全,因为没有多少人想要侧载两个.net版本“ --wsanville
What does 'useLegacyV2RuntimeActivationPolicy' do in the .NET 4 config?