Nuget支持使用不同的.NET平台(即.NET 2,.NET 4等)构建的项目。

时间:2013-05-29 21:46:39

标签: .net nuget multiplatform

问题:

我会尽量保持简单。

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

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

    Nuget有没有支持这个?即配置等

    感谢。

2 个答案:

答案 0 :(得分:1)

NLog包包含.NET 2.0和.NET 4.0平台的程序集。您应该将程序集放在同一个程序包中,并将NLog称为依赖项。当您将包添加到项目中时,NuGet将为NLog和您的包提供正确的程序集。

答案 1 :(得分:0)

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

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

  • 安装NLog。正确的框架将自动引用。
  • 运行NuGet Spec命令。
  • 编辑创建的nuspec(可能使用NuGet Package Explorer)。
  • 运行NuGet Pack。已安装软件包的依赖关系将自动添加 ,包括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 Package Explorer检查它是否正常)。

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

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