【问题标题】:Do I have to build a separate release of my class library for each version of .net?我是否必须为每个 .net 版本构建一个单独的类库版本?
【发布时间】:2011-11-16 13:39:42
【问题描述】:

我很确定答案是肯定的,但我还没有找到一个直接提出这个问题的问题。

我的产品是一组 .NET 类库。使用它们的应用程序及其配置文件完全不受我的控制。我曾经(错误地,我相信)认为如果这些库是针对 .NET 2.0 构建的,那么它们可以与更高版本一起使用。在最近的一个用户问题之后,我更详细地研究了情况,如果我理解正确,兼容性只是编译时而不是运行时(除非在应用程序配置中指定。)

那么我是否必须针对用户想要定位的每个框架版本来构建它,或者有没有办法生成与版本无关的类库?

【问题讨论】:

  • 一般来说它应该可以正常工作...您是否见过从 4.0 应用程序引用 2.0 dll 的问题?
  • 我一直认为 3.5 和 4.0 可以合理地向后兼容 2.0。您可以使用Environment.Version 识别您的运行时版本

标签: .net version compatibility


【解决方案1】:

我相信您可以在 app.config 文件中指定目标框架,如下所示:

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727"/>
   </startup>
</configuration>

【讨论】:

    【解决方案2】:

    如果您打算让您的应用程序使用与构建应用程序不同的运行时(.Net Framework),则需要重新构建。

    【讨论】:

      【解决方案3】:

      除非您的类库是混合模式,否则您应该能够毫无问题地使用来自 .NET 4 应用程序的 .NET 2.0 类库。 (我假设您已经构建了“任何 CPU”程序集。)我已经多次这样做了。

      应该没问题,但如果您遇到特定错误,我建议您编写一个简短但完整的程序来演示问题,并将其包含在您的问题中。

      【讨论】:

      • 啊!我的问题似乎是我的测试应用程序(与产品一起构建)针对.NET 2.0。如果我构建面向 .NET 4 的应用程序并使用面向 .NET 2.0 的类库程序集,它可以正常工作。谢谢指路; Microsoft 文档听起来好像针对特定版本构建的所有内容都只能与该版本一起使用,除非 app.config 另有说明。
      • (很抱歉您回复的评论被删除;我用上面的文字替换它的编辑超时。)
      • @Jim:已正式删除我的评论。那么现在一切都好吗?
      • 好的,非常感谢。我并不期待向用户解释应用程序配置文件的前景。 ;-)
      猜你喜欢
      • 1970-01-01
      • 2019-10-28
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多