You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

创建.NET Standard 2.0 NuGet包时如何排除指定依赖项

如何排除特定PackageReference作为NuGet依赖项

当然可以实现!针对那些仅提供.targets构建文件的NuGet包,你只需要在项目文件(.csproj)中给对应的PackageReference添加特定的MSBuild元数据,就能阻止它被包含到你的NuGet包依赖列表里。

具体做法

找到那个只含.targetsPackageReference节点,添加PrivateAssets="All"属性,示例如下:

<PackageReference Include="你的目标包名称" Version="对应的版本号">
  <PrivateAssets>All</PrivateAssets>
</PackageReference>

原理说明

  • PrivateAssets="All" 会告诉MSBuild:这个包的所有资产(包括构建目标、依赖项等)仅用于当前项目的构建过程,不会被传递到引用你项目的其他项目,也不会被包含在你生成的NuGet包的依赖声明中。
  • 这样设置后,这个包依然会在你的项目构建时正常生效(比如它的.targets文件会被执行),但最终用户安装你的NuGet包时,不会自动下载这个依赖包。

额外验证

设置完成后,你可以:

  • 生成NuGet包后,解压.nupkg文件,查看里面的.nuspec文件,确认目标包没有出现在<dependencies>节点中。
  • 本地构建项目,确保构建流程不受影响,同时依赖列表中不再包含该包。

内容的提问来源于stack exchange,提问作者myermian

火山引擎 最新活动