Visual Studio 2017 Nuget pack将项目引用作为另一个nuget引用排除,但添加程序集
问题描述:
当我们在visual studio 2017中创建nuget包时,它默认将项目引用添加为另一个nuget引用。 我们如何可以禁用在创建包,而是:Visual Studio 2017 Nuget pack将项目引用作为另一个nuget引用排除,但添加程序集
- 选择了不同的包名
- 包括项目的DLL,而不是在创建包
答
的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
是建立要额外包括到.nupkg
文件,而不是为引用的项目发布一个额外的NuGet包一个DLL的项目。
指定不同的NuGet包比较困难。它需要使用它手动创建一个.nuspec
文件来打包一个NuGet包。您可以在https://github.com/dasMulli/nuget-include-p2p-example/tree/master/LibA - LibA.csproj
设置为使用LibA.nuspec
时看到一个示例,如何调用dotnet pack
。