一个.NET 4.0项目如何引用使用v2.0.50727运行时的程序集?

3
我正在将一个C#项目从.NET 3.5转换为VS2010中的.NET 4.0。它引用了其他第三方dll文件,并且运行时版本是v2.0.50727。
这怎么可能呢?我原以为在构建或运行时会出现警告或错误,但实际上没有。如果我的编译后的.NET 4项目正在使用.NET v4.0.30319运行时,那么它是否在运行时使用了.NET 2.0.50727运行时引用的dll文件?因此,我仍然需要安装旧版本的.NET吗?
还是说引用的dll正在v4.0.30319运行时中运行?

请查看这个问题:链接在此 - Oliver Kane
感谢所有的回复!我也在这里找到了答案 - https://dev59.com/GG025IYBdhLWcg3wGB4n - Aaron Morrison
2个回答

5
不,这只是自动工作的。v4 CLR对旧的v2程序集引用没有问题,它们会被一对一地转换为那些程序集的v4版本。如果这是一个非框架程序集,那么什么神奇的事情也不会发生,它仍然可以读取v2程序集的元数据。
这是相当必要的,如果不能正常工作,很少有程序员会选择升级到4.0版本。虽然在一些个别情况下,4.0中过期的错误修复导致了不同的行为,但这种情况非常罕见。

v4 CLR 无法运行 v2 程序集。您必须安装 v2 CLR。请查看我的答案以获取更多详细信息。 - Phillip Scott Givens
不。进程内并排功能仅对自定义CLR托管场景启用。[ComVisible] .NET程序集被加载到非托管进程中是最常见的情况。 - Hans Passant

0

为了防止链接失效,从评论问题开始:

"是的,您可以从更高版本的应用程序引用2.0类库,但反过来不行。

您可以随时检查.NET版本兼容性。(升级到4有一些注意事项,但总体而言应该没问题。)--Brad Christie

您可能会遇到的任何问题都源于2之前的版本。(虽然我听说4之后是重写,所以我不确定他们如何处理向后兼容性。我相信他们必须保持安全,因为没有多少人想要侧载两个.NET版本" --wsanville

.NET 4配置中的'useLegacyV2RuntimeActivationPolicy'是什么意思?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接