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