You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让NuGet包被引用时自动在消费者csproj中添加<ExcludeAssets>runtime</ExcludeAssets>

实现NuGet包自动添加ExcludeAssets配置的方法

你只需要修改A.PluginBase项目自身的.csproj文件,添加对应配置,就能让消费者引用该包时自动带上<ExcludeAssets>runtime</ExcludeAssets>,无需手动编辑.csproj:

方法一:设置默认排除资产(推荐)

在项目的<PropertyGroup>节点中添加DefaultExcludeAssets属性,直接定义包的默认排除规则:

<PropertyGroup>
  <PackageId>A.PluginBase</PackageId>
  <Version>1.0.0</Version>
  <!-- 补充其他必填包属性:Authors、Description等 -->
  <DefaultExcludeAssets>runtime</DefaultExcludeAssets>
</PropertyGroup>

这个属性会告诉NuGet,当任何项目引用该包时,默认排除runtime类型的资产,对应生成的PackageReference会自动包含<ExcludeAssets>runtime</ExcludeAssets>。

方法二:通过包引用元数据控制

如果需要更精细的资产权限控制,可以在项目的<ItemGroup>中添加对自身的引用并配置规则:

<ItemGroup>
  <PackageReference Update="A.PluginBase" Version="1.0.0">
    <ExcludeAssets>runtime</ExcludeAssets>
    <!-- 确保该排除规则传递给所有引用此包的项目 -->
    <PrivateAssets>none</PrivateAssets>
  </PackageReference>
</ItemGroup>

这种方式会明确指定该包的runtime资产被排除,并且让规则自动同步到消费者的引用配置中。

验证效果

构建并发布你的NuGet包后,当消费者通过NuGet包管理器安装A.PluginBase时,其项目的.csproj文件中会自动生成如下引用:

<PackageReference Include="A.PluginBase" Version="1.0.0">
    <ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>

完全符合需求,无需消费者手动修改配置。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:20:42