当我们在visual studio 2017中创建一个nuget包时,默认情况下它会将项目引用添加为另一个nuget引用。 我们如何在创建包时禁用它:
答案 0 :(得分:7)
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,您希望另外包含在.nupkg
文件中,而不是为该引用的项目发布额外的NuGet包。
指定不同的NuGet包更加困难。它需要手动创建一个.nuspec
文件来使用它来打包NuGet包。您可以在https://github.com/dasMulli/nuget-include-p2p-example/tree/master/LibA看到如何完成此操作的示例 - LibA.csproj
设置为在调用LibA.nuspec
时使用dotnet pack
。