簡體   English   中英

如何從類庫 NuGet 包中排除包?

[英]How to exclude a package from a Class Library NuGet package?

我有一個將內置到 NuGet 包中的.NET Standard類庫項目。 我已經安裝了docfx.console包,這樣我每次構建時都可以生成一個文檔網站。

現在,當另一個項目安裝我的庫的 NuGet 包時,也會安裝docfx.console NuGet 包 - 這是我不想要的。

在 Package 下的項目屬性中,我選擇了Generate NuGet package on build 當我構建它時,這將自動為我的庫生成 NuGet 包。 但是在此選項卡中,我看不到任何可以配置以排除任何包的地方。

所以為了排除docfx.console包,我創建了一個 .nuspec 文件,內容如下:

<?xml version="1.0" encoding="utf-8" ?>

<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <!-- Required elements-->
    <id>My.Library</id>
    <version>1.0.1</version>
    <description>My Library's project dscription.</description>
    <authors>Me</authors>
    <copyright>My Copyright (c)</copyright>

    <!-- Optional elements -->
    <dependencies>
      <dependency id="docfx.console" version="2.36.1" exclude="build" />
    </dependencies>
    <!-- ... -->
  </metadata>
  <!-- Optional 'files' node -->
</package>

但它不起作用。 在構建 NuGet 包時如何更正它以排除docfx.console包?

或者,有沒有其他方法可以從 NuGet 包中排除docfx.console包?

如何從類庫 NuGet 包中排除包?

根據 NuGet 官方文檔控制依賴資產

您可能純粹將依賴項用作開發工具,並且可能不想將其暴露給將使用您的包的項目。 在這種情況下,您可以使用 PrivateAssets 元數據來控制此行為。

 <ItemGroup> <!-- ... --> <PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0"> <PrivateAssets>all</PrivateAssets> </PackageReference> <!-- ... --> </ItemGroup>

因此,正如 UserName 評論的那樣,您可以將<PrivateAssets>all</PrivateAssets> PackageReference到項目中docfx.console PackageReference中。

為此,請編輯您的項目文件.csproj ,如下所示:

  <ItemGroup>
    <PackageReference Include="docfx.console" Version="2.36.2" PrivateAssets="All" />
  </ItemGroup>

或者

  <ItemGroup>
    <PackageReference Include="docfx.console" Version="2.36.2">
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>

如果您使用.nuspec文件,則應在.nuspec文件中移動以下依賴項信息:

<dependencies>
  <dependency id="docfx.console" version="2.36.1" />
</dependencies>

暫無
暫無

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

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