如何从类库 NuGet 包中排除包?

2023-12-07

我有一个.NET Standard将构建到 NuGet 包中的类库项目。我已经安装了docfx.console包,以便我每次构建时都可以生成一个文档网站。

现在,当另一个项目安装我的库的 NuGet 包时,docfx.consoleNuGet 包也被安装 - 这是我不想要的。

在“包”下的项目属性中,我选择了在构建时生成 NuGet 包。当我构建库时,这会自动生成库的 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>

但它不起作用。我该如何纠正它以排除docfx.console构建 NuGet 包时的包?

或者,有没有其他方法可以排除docfx.console来自 NuGet 包的包?


如何从类库 NuGet 包中排除包?

根据NuGet官方文档控制依赖资产:

您可能纯粹将依赖项用作开发工具,并且 可能不想将其暴露给会消耗您资源的项目 包裹。在这种情况下,您可以使用 PrivateAssets 元数据 控制这种行为。

<ItemGroup>
    <!-- ... -->

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

    <!-- ... -->
</ItemGroup>

因此,就像 UserName 评论的那样,您可以添加<PrivateAssets>all</PrivateAssets> to PackageReference of docfx.console在你的项目中。

为了实现这一点,编辑您的项目文件.csproj像下面这样:

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

Or

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

如果您正在使用.nuspec文件中,您应该将以下依赖项信息移动到您的.nuspec file:

<dependencies>
  <dependency id="docfx.console" version="2.36.1" />
</dependencies>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从类库 NuGet 包中排除包? 的相关文章

随机推荐