【问题标题】:How can a .NET 4.0 project reference an assembly that uses the v2.0.50727 runtime? [duplicate].NET 4.0 项目如何引用使用 v2.0.50727 运行时的程序集? [复制]
【发布时间】:2013-09-23 09:01:43
【问题描述】:

我有一个 c# 项目,我正在 VS2010 中从 .net 3.5 转换为 .net 4.0。它引用了运行时版本为 v2.0.50727 的其他第 3 方 dll。

这怎么可能?在构建或运行时,我有点期待警告或损坏,但我没有。如果我编译的 .net 4 项目使用 .net v4.0.30319 运行时运行,它是否使用 .net 2.0.50727 运行时运行引用的 dll?因此,我还需要安装旧版本的 .net?

或者引用的 dll 是否在 v4.0.30319 运行时中运行?

【问题讨论】:

标签: c# .net visual-studio-2010 runtime clr


【解决方案1】:

来自commented question 防止链接腐烂:

“是的,您可以从更高框架版本的应用程序中引用 2.0 类库,但反之则不行。

您可以随时查看.NET Version Compatibility。 (有some caveats移动到4,但一般来说你应该没问题。) ——布拉德·克里斯蒂

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

What does 'useLegacyV2RuntimeActivationPolicy' do in the .NET 4 config?

【讨论】:

    【解决方案2】:

    不,它只是自动运行。 v4 CLR 对旧的 v2 程序集引用没有任何问题,它将它们一对一地转换为这些程序集的 v4 版本。或者,如果这是一个非框架程序集,那么什么都不会发生,它仍然可以读取 v2 程序集的元数据。

    很有必要,如果这不起作用,很少有程序员会选择升级到 4.0 版。有一些孤立的案例,其中 4.0 中的过期错误修复导致不同的行为,但它们非常罕见。

    【讨论】:

    • v4 CLR 不会运行 v2 程序集。您必须安装 v2 CLR。详情请参阅我的回答。
    • 没有。仅对自定义 CLR 托管方案启用进程内并行功能。 [ComVisible] .NET 程序集被加载到非托管进程中是最常见的情况。
    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2011-04-23
    • 2011-05-20
    相关资源
    最近更新 更多