【问题标题】:Implement a .Net project targeting both 3.5 and 4.0实施针对 3.5 和 4.0 的 .Net 项目
【发布时间】:2012-06-26 14:40:28
【问题描述】:

我们有一个项目(日志库),供标准 asp.net 应用程序(4.0 框架)和 sharepoint 解决方案(3.5 框架)使用。

有没有办法定义两个目标,以便在我们构建项目时同时构建两个版本?

另外,任何人都实现了这样的东西并通过 nuget 分发它?在 nuget 上发布这两个版本的最佳方法是什么?

谢谢

【问题讨论】:

  • 如果你不使用 4.0 的特性,为什么你干脆不为 3.5 发布?您的库将在 3.5 和 4.0 中都可用!
  • 最好的方法是编译项目两次。

标签: .net msbuild nuget


【解决方案1】:

答案是<supportedRuntime> 配置元素。这允许您指定您的应用程序可以支持和运行的所有 .NET 运行时。当然,在您的应用程序中,您只能使用您选择的所有 .NET 框架版本提供的功能。

简而言之,你应该在你的配置中有这个:

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

可能有必要将您的应用程序最初定位到 .NET 3.5,因为 &lt;supportedRuntime&gt; 允许升级而不是降级。

【讨论】:

    【解决方案2】:

    您可以创建两个 C# 项目(csproj 文件),其中包含相同的源文件(或更多项目,具体取决于您的结构)。 一个项目应该针对 .NET 3.5,另一个针对 .NET 4.0。

    如果您想使用特定于 .NET 4.0 的功能,那么您可以使用 .NET 4 项目中定义的 conditional compilation symbols 来实现。

    您还可以选择添加一个或多个解决方案(针对 VS2008 和 VS2010),每个解决方案都使用一个 C# 项目。

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 2011-04-30
      • 1970-01-01
      • 2011-09-07
      • 2011-05-01
      • 2014-06-16
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多