gpt4 book ai didi

c# - 如何从类库 NuGet 包中排除包?

转载 作者:行者123 更新时间:2023-12-04 02:59:12 25 4
gpt4 key购买 nike

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

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

在 Package 下的项目属性中,我选择了 在构建上生成 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 包中的包?

最佳答案

How to exclude a package from a Class Library NuGet package?



根据 NuGet 官方文档 Controlling dependency assets :

You might be using a dependency purely as a development harness and might not want to expose that to projects that will consume your package. In this scenario, you can use the PrivateAssets metadata to control this behavior.

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

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

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


因此,正如 UserName 评论的那样,您可以添加 <PrivateAssets>all</PrivateAssets>PackageReferencedocfx.console在你的项目中。

完成此操作 , 编辑您的项目文件 .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>

关于c# - 如何从类库 NuGet 包中排除包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50875356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com