【问题标题】:Is it possible for a C# project to use multiple .NET versions?C# 项目是否可以使用多个 .NET 版本?
【发布时间】:2015-08-16 02:34:52
【问题描述】:

我自学了编码,但我不确定这是否可行。 我也不知道我在这里问的是不是有什么名字(例如:“你问的是什么叫 xxxxxx”)。我在这个主题上找不到任何东西(但确实找到了一些升级文章,这并不是我想要的,所以如果这听起来像是对铁杆编码员的 NOOB 问题,请原谅;我是初学者)。

由于包含一些外部库,我有一个依赖 .NET 2.0 的小项目。该软件运行良好,但现在需要添加功能;在 .NET 4.0 或 4.5 下更容易编程的东西。

但是,包含的外部库不在那个 .NET 级别,所以现在我想知道:一个项目可以有多个 .NET 版本吗?

我不确定,但我也在想,也许我只将我的新函数编写为依赖于 .NET 4.5 的 dll,在其中我在另一个项目中编写我的公共函数,然后在我的 prj 中包含该最终 dll这取决于 .NET 2.0...但不确定这是否可行。

【问题讨论】:

  • 从我在 Microsoft 存储库中看到的情况来看,他们为每个想要支持的 .NET 版本都有单独的项目......
  • 你不应该只使用任何依赖于较低(或同等).Net 版本的库吗?
  • 除了混合模式程序集外,我希望基于 .NET 2.0 构建的程序集通常只能在 .NET 4.0 或 4.5 中工作...
  • 更好的查看方式是 c# 向后兼容。几乎是我认为之前被问到的最佳答案。 stackoverflow.com/questions/2843318/…stackoverflow.com/questions/5084921/…

标签: c# .net


【解决方案1】:

是的,您可以将 .NET 2 程序集包含到 .NET 4 或 .NET 4.5 项目(或任何版本,如果您愿意)中。在 .NET 2 项目中包含 .NET 4 程序集将不起作用。

如果您想在基础项目中使用新功能,则需要升级所有依赖它的项目。然后确保整个树支持 .NET 4(例如 Office 插件或您可能使用的其他相关软件)。

一个例外是使用 mixed-mode assemblies(同时使用 .NET 和非托管代码的程序集),这对 CLR 更严格,可能会导致 problems due to the activity policy (MSDN)。

【讨论】:

  • 可以使用 useLegacyV2RuntimeActivationPolicy 使 V2 混合模式程序集在 V4 运行时工作:msdn.microsoft.com/en-us/library/bbx34a2h.aspx
  • @JonathanDickinson:确实。请参阅激活策略下的链接。添加了 MSDN 链接。
  • 你的意思是说我的主应用程序必须转换为 v4,而我必须在 v2 中保持例程在 v4 的某种特殊策略中?
  • @user613326:不,如果您打算在要包含在 .NET 4 项目中的子项目中使用 .NET,那没关系。反之则不然。混合程序集也会带来问题(我怀疑你是否使用它)。
【解决方案2】:

您只能使用一个 .NET 版本,这是您的主要应用程序需要(或已配置)使用的版本。但是,.NET 在很大程度上向后兼容旧版本,并且通常可以在新版本的框架中不加改变地运行旧程序集。

因此,即使您的应用程序可能正在运行 .NET 4 或 4.5,您也可以使用为 .NET 2 编写的程序集(或库)(尽管可能存在一些限制,正如其他人所提到的)。这些程序集仅在 4.5 CLR 下运行(假设它们没有向后兼容性问题),这种情况很少见,但确实会发生)。

但要记住的关键是,您正在运行的应用程序必须是任何包含程序集的最高版本。这意味着,如果您有 4.5 程序集,则不能将您的应用程序作为 2.0 应用程序运行。肯定是反过来的。

【讨论】:

    【解决方案3】:

    听起来您正在寻找并行执行,尤其是进程内并行执行:

    In-Process Side-by-Side execution

    【讨论】:

      【解决方案4】:

      是的,您可以加入。这就是 CLS 的作用

      如果您想在基础项目中使用新功能,您需要升级所有基于它的项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-04
        • 2021-04-17
        • 2021-10-24
        相关资源
        最近更新 更多