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

如何在.nuspec中正确排除NuGet包内的Newtonsoft.Json.dll?

问题分析与解决方法

你之前的写法完全搞反了——那行代码是把Newtonsoft.dll打包到NuGet包的根目录,而不是排除它,这就是为什么无效。

要在nuspec里排除指定文件,正确的用法是利用exclude属性,分两种场景处理:

场景1:批量包含输出文件并排除目标dll

如果你的类库编译输出都在bin\Release下,想打包所有输出文件但排除Newtonsoft.Json.dll,可以这么写:

<files>
  <!-- 将bin/Release下所有文件打包到lib目录(替换net4xx为你的目标框架,比如net462) -->
  <file src="bin\Release\**" target="lib\net4xx" exclude="**\Newtonsoft.Json.dll" />
</files>

这里的**是通配符,匹配任意层级的文件;exclude指定要排除的文件路径,同样支持通配符。

场景2:逐个指定要打包的文件

如果是手动指定每个要打包的文件,直接不要写包含Newtonsoft.Json.dll的<file>节点就行:

<files>
  <file src="bin\Release\YourClassLibrary.dll" target="lib\net4xx" />
  <file src="bin\Release\YourClassLibrary.pdb" target="lib\net4xx" />
  <!-- 只列你需要的文件,完全不碰Newtonsoft.Json.dll -->
</files>

额外建议

更规范的做法是不要手动拷贝Newtonsoft.Json.dll到类库项目,而是通过NuGet引用Newtonsoft.Json包,然后在nuspec里添加依赖声明:

<dependencies>
  <group targetFramework="net4xx">
    <dependency id="Newtonsoft.Json" version="[1.0, )" />
  </group>
</dependencies>

这样使用你的NuGet包的项目会自动根据自身已有的Newtonsoft.Json版本适配,避免版本冲突。如果因为特殊需求必须排除项目里已有的dll,用前面的exclude写法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:35:37