删除 NuGet 包的依赖 NuGet 包
Posted
技术标签:
【中文标题】删除 NuGet 包的依赖 NuGet 包【英文标题】:Removing a NuGet package's dependent NuGet packages 【发布时间】:2021-02-23 10:01:27 【问题描述】:背景:
我正在为我的公司创建项目的 NuGet 包,然后这些 NuGet 包将安装到其他内部项目中。目前,我正在使用 .NET Standard/Core 项目的内置功能来做这件事。这可以按预期工作,但是,我们所有的项目都安装了“包装 NuGet 包”以进行一些代码分析(StyleCop NuGet 包 + 公司特定的规则集文件和 Json 文件)。
如果我想将一个 NuGet 包(我创建的)安装到另一个项目中,它总是会添加对我们的样式分析器 NuGet 包的依赖。
这是安装在项目中的样子:
问题:
有没有一种方法可以在创建 NuGet 包时删除对特定 NuGet 包的依赖?即有没有办法可以在(.csproj 文件)的行中做某事:
<ItemGroup>
<PackageReference Condition="'$(Configuration)'=='Debug'" Include="CompanyStyleAnalyzer" Version="1.1.6" />
</ItemGroup>
但不是指定实际版本,我总是想删除依赖项,无论我在“发布”配置中构建项目时的版本是什么,或者更好的是,每次运行 Dotnet 包时,指定的东西最终包中不包含依赖项。
这是在项目中删除依赖项的“皱眉”方式吗?
我之前生成 NuGet 包的方式(在 .Net Framework 中)是使用 NuGet CLI -pack 命令,然后提取文件并编辑 .Nuspec 文件以手动删除依赖项。我不想编辑 Nuspec 文件并重新打包。
谁能说明我在这方面能做什么?
【问题讨论】:
您的问题有点不清楚,但我认为您可能正在寻找PrivateAssets=all
? docs.microsoft.com/en-us/nuget/consume-packages/…
你说得对,这正是我想要的。我不喜欢我提到的“'$(Configuration)'=='Debug'”方法,PrivateAssets 方法似乎更适合用途。您也可以将其发布为答案,因为文档说明了所有需要的内容。谢谢。
仅供参考:由于@IanKemp 没有添加此作为答案,我已代表他们这样做(并将其标记为社区 wiki,因为这不是我的贡献)。这将允许该答案被接受,因此该问题不会显示为未回答。
【参考方案1】:
根据@Ian-Kemp 的评论,这可以通过在您的PackageReference
下使用the PrivateAssets
element 来实现:
<ItemGroup>
<PackageReference Include="CompanyStyleAnalyzer" Version="1.1.6" />
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
【讨论】:
以上是关于删除 NuGet 包的依赖 NuGet 包的主要内容,如果未能解决你的问题,请参考以下文章
带有私有 NuGet 包的 Blazor 依赖项注入和 EF/DbContext