Visual Studio 2017 Nuget包将项目引用排除为另一个nuget引用,而是添加程序集

Sat*_*jit 5 nuget nuget-package visual-studio-2017

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

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

Mar*_*ich 8

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>
Run Code Online (Sandbox Code Playgroud)

testprivatelib.csproj构建DLL的项目在哪里,您希望另外包含到该.nupkg文件中,而不是为该引用的项目发布额外的NuGet包.

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