簡體   English   中英

Visual Studio 2017 Nuget包將項目引用排除為另一個nuget引用,而是添加程序集

[英]Visual Studio 2017 Nuget pack exclude Project reference as another nuget reference, add assembly instead

當我們在visual studio 2017中創建一個nuget包時,默認情況下它會將項目引用添加為另一個nuget引用。 我們如何在創建包時禁用它,而是:

  • 選擇不同的包名稱
  • 在創建包時包含項目的dll

可以使用PrivateAssets="All"標記PackageReference ,以確保它在打包時不會作為使用庫的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.nuspecdotnet pack叫做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM