1

问题:

我会尽量保持简单。

  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有没有支持这一点?即配置等。

谢谢。

4

2 回答 2

1

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

于 2013-05-29T21:51:40.927 回答
0

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

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

  • 安装 NLog。将自动引用正确的框架。
  • 运行 NuGet 规范命令。
  • 编辑创建的 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 规范命令。
  • 将 Package.nuspec 重命名为 PACKAGE_NAME.nuspec。
  • 使用您的包数据编辑 PACKAGE_NAME.nuspec(可能通过使用 NuGet 包资源管理器),并在元数据中包含以下行:

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

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

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

于 2013-05-30T22:36:48.763 回答