【问题标题】:Is it possible to reference an assembly that targets .net 4.5 in a project that targets 4.0?是否可以在以 4.0 为目标的项目中引用以 .net 4.5 为目标的程序集?
【发布时间】:2023-04-11 00:52:01
【问题描述】:

我有一个针对 .net 4.0 的 MVC 3 应用程序它有十几个同样针对 .net 4.0 的项目

我为使用反射的 .net 4.5 解决方案创建了一个新项目(我想使用 4.5 中的一些不错的功能)。当我尝试编译时,我收到一条错误消息,提示“找不到类型或命名空间(新 4.5 项目),您是否缺少指令或程序集引用”。

是否可以在针对 4.0 的项目中引用针对 .net 4.5 的程序集?

【问题讨论】:

  • 理论上我会说你可以,因为 .Net 4.5 是 .Net 4.0 的替代品,所以运行时是相同的。我建议不要这样做,因为显然您正在冒着调用 4.5 项目中不存在的代码的风险。它是您想要的 4.5 中的 BCL 功能还是语言功能?
  • 编译器将 2×4 应用于您的额头。如果您认为这是错误的,那么请尝试想象当您的代码调用仅在 .NET 4.5 中可用但在安装了 4.0 的机器上运行的方法时会发生什么。啪啪啪。
  • CodingGorilla - 这是一个 BCL 功能,属性的反射似乎更好一些,并且有更多的辅助函数

标签: c# .net .net-4.0 .net-4.5


【解决方案1】:

是否可以引用针对 .net 4.5 的程序集 在以 4.0 为目标的项目中?

没有。不应该。 .Net 4.5 程序集中使用的某些功能可能不是 .Net 4.0 的一部分,在这种特殊情况下,它应该会失败。

【讨论】:

  • 这似乎与这里的解释相矛盾:stackoverflow.com/a/12631425/881111
  • @Nuzzolilo,这是两个不同的东西,一个是在 4.0 的项目中使用 4.5 开发的程序集,另一个是在具有 4.5 的机器上运行 4.0
【解决方案2】:

我想您可以将您的项目设置为 .net 4.5,但如果您想将其保留为 4.0,请查看此link 可能会对您有所帮助

【讨论】:

    【解决方案3】:

    是的,这是可能的。只需打开 .Net 4.0 程序集的 .csproj 文件,在文本编辑器中给出程序集加载错误,然后将其设置为 .Net 4.5 程序集参考:

          <SpecificVersion>True</SpecificVersion>
    

    【讨论】:

      猜你喜欢
      • 2012-11-22
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      相关资源
      最近更新 更多