【问题标题】:Nuget support across projects being built with different .NET Platform (i.e. .NET 2, .NET 4, etc.)跨使用不同 .NET 平台(即 .NET 2、.NET 4 等)构建的项目的 Nuget 支持
【发布时间】:2013-05-29 21:46:38
【问题描述】:

问题:

我会尽量保持简单。

  1. 我们有两种相同的解决方案,但一种在 .NET 2.0 中构建,另一种在 .NET 4.0 中构建
  2. 这两个解决方案都包含一个项目,每个项目都是相同的,但一个是在 .NET 2.0 和 .NET 4.0 中构建的。
  3. 两个项目引用相同的文件
  4. 该方法的目的是我们需要构建一个辅助库但需要支持多个平台(.NET 2.0..NET 4.0 等)
  5. 解决方案、项目和源文件都位于同一个文件夹中。

我们的目标:

我们希望将 Nuget 用于 NLog。但是,我们要确保 .NET 2.0 项目仅绑定到 Nuget NLog 2.0 库,而 .NET 4.0 项目仅绑定到 Nuget NLog 4.0 库。

Nuget 有没有支持这一点?即配置等。

谢谢。

【问题讨论】:

    标签: .net nuget multiplatform


    【解决方案1】:

    NLog 包包含适用于 .NET 2.0 和 .NET 4.0 平台的程序集。您应该像这样将程序集放在同一个包中,并将 NLog 声明为依赖项。当您将包添加到项目时,NuGet 将为 NLog 和您的包获取正确的程序集。

    【讨论】:

    • 让我试一试。听起来很简单。
    【解决方案2】:

    正如 Ufuk 所说,NLog 包已经包含 .NET 2.0 和 4.0 的程序集。

    如果您只有一种解决方案:

    • 安装 NLog。将自动引用正确的框架。
    • 运行 NuGet Spec 命令。
    • 编辑创建的 nuspec(可能使用 NuGet 包资源管理器)。
    • 运行 NuGet 包。对已安装包的依赖会自动添加,包括 NLog。

    但是,您有两个解决方案,并且您想创建一个包。在这种情况下:

    • 创建具有以下结构的文件夹(不得包含 NLog 程序集):

      PACKAGE_NAME
      |  lib
      |  |  net40
      |  |  |  (insert here your .NET 4.0 assemblies)
      |  |  net45
      |  |  |  (insert here your .NET 4.5 assemblies)
      
    • 转到此文件夹的根目录。

    • 运行 NuGet Spec 命令。
    • 将 Package.nuspec 重命名为 PACKAGE_NAME.nuspec。
    • 使用您的包数据编辑 PACKAGE_NAME.nuspec(可能通过使用 NuGet 包资源管理器)并在元数据中包含以下行:

      <dependencies>
          <dependency id="NLog" version="REPLACE_WITH_VERSION" />
      </dependencies>
      
    • 运行 NuGet Pack 命令。将创建您的包(您可以使用 NuGet 包资源管理器检查它是否正常)。

    现在,安装您的包的​​每个人都会正确引用您的程序集。

    如果您需要更多详细信息,请查看此link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 2010-11-15
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      相关资源
      最近更新 更多