【问题标题】:Visual Studio 2017 Nuget pack exclude Project reference as another nuget reference, add assembly insteadVisual Studio 2017 Nuget 包将项目引用排除为另一个 nuget 引用,而是添加程序集
【发布时间】:2017-09-23 05:07:29
【问题描述】:

当我们在 Visual Studio 2017 中创建一个 nuget 包时,它默认将项目引用添加为另一个 nuget 引用。 我们如何在创建包时禁用它,而不是:

  • 选择不同的包名
  • 在创建包时包含项目的 dll

【问题讨论】:

    标签: nuget visual-studio-2017 nuget-package


    【解决方案1】:

    PackageReference 可以用PrivateAssets="All" 标记,以确保在打包时它不会成​​为消费库的 NuGet 依赖项。然后消费库可以使用自定义目标将文件添加到构建的 nuget 包中。 csproj 文件的完整示例如下所示:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
        <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);IncludeP2PAssets</TargetsForTfmSpecificBuildOutput>
      </PropertyGroup>
    
      <ItemGroup>
        <ProjectReference Include="..\testprivatelib\testprivatelib.csproj" PrivateAssets="All" />
      </ItemGroup>
    
      <Target Name="IncludeP2PAssets">
        <ItemGroup>
          <BuildOutputInPackage Include="$(OutputPath)\testprivatelib.dll" />
        </ItemGroup>
      </Target>
    </Project>
    

    其中testprivatelib.csproj 是一个构建DLL 的项目,您希望将该DLL 添加到.nupkg 文件中,而不是为该引用的项目发布额外的NuGet 包。

    指定不同的 NuGet 包更加困难。它需要手动创建一个.nuspec 文件,使用它来打包 NuGet 包。您可以在 https://github.com/dasMulli/nuget-include-p2p-example/tree/master/LibA 上看到一个示例 - LibA.csproj 设置为在调用 dotnet pack 时使用 LibA.nuspec。

    【讨论】:

      猜你喜欢
      • 2016-08-09
      • 2018-10-28
      • 1970-01-01
      • 2018-04-26
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多