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

VSIX项目在VS≥15.5版本中缺失Newtonsoft.Json的解决方案咨询

解决VSIX包在VS 15.5+中缺失Newtonsoft.Json.dll导致运行异常的问题

我之前处理过完全相同的问题:VS 15.4及更早版本,生成的VSIX包会自动包含Newtonsoft.Json.dll,但从15.5开始,微软在C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\VSSDK\Microsoft.VsSDK.targets里新增了排除规则,把这个dll从包中移除了,直接导致依赖它的VSIX在高版本VS里运行报错。

下面是几个经过验证的可行解决方案,按推荐程度排序:

方案1:修改项目文件强制包含dll(最推荐)

这个方法直接在项目层面覆盖targets的排除规则,不会影响全局设置,也不怕VS更新覆盖:

  1. 右键你的VSIX项目 → 「卸载项目」
  2. 右键卸载后的项目 → 「编辑xxx.csproj」(或xxx.vbproj)
  3. 在文件末尾的</Project>标签之前,插入这段XML代码:
<ItemGroup>
  <VSIXCopyLocalAssemblies Include="Newtonsoft.Json.dll">
    <DestinationSubDirectory>Assemblies</DestinationSubDirectory>
  </VSIXCopyLocalAssemblies>
</ItemGroup>
  1. 保存文件,重新加载项目,再重新生成VSIX包
    这样编译后的包会自动把Newtonsoft.Json.dll放到Assemblies目录下,安装后就能被正确加载。

方案2:检查并调整引用属性

有时候是引用的Copy Local属性没设置对,导致dll没被复制到输出目录:

  1. 在项目的「引用」节点下找到Newtonsoft.Json,右键 → 「属性」
  2. 确保「复制本地」设置为True
  3. 如果你想更稳妥,可以直接编辑项目文件,确认引用的Private属性是True(对应复制本地):
<Reference Include="Newtonsoft.Json, Version=你的版本号, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
  <HintPath>..\packages\Newtonsoft.Json.版本号\lib\net45\Newtonsoft.Json.dll</HintPath>
  <Private>True</Private>
</Reference>

如果Private是False,改成True即可。

方案3:添加绑定重定向解决版本冲突

如果VS 15.5+本身自带了Newtonsoft.Json,但版本和你项目依赖的不一致,可能会出现加载异常,这时候可以加绑定重定向:

  1. 如果项目没有app.config文件,右键项目 → 「添加」→ 「新建项」→ 选择「应用程序配置文件」
  2. 在app.config中添加以下内容(替换版本号为你实际依赖的版本):
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

这样VS会优先加载你打包的版本,避免版本不兼容问题。

方案4:修改全局targets文件(不推荐)

这个方法需要管理员权限,而且VS更新后会被覆盖,仅作为应急方案:

  1. 打开路径C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\VSSDK\Microsoft.VsSDK.targets
  2. 查找包含Newtonsoft.Json.dll的排除项,比如类似<ExcludeFromVSIX>Newtonsoft.Json.dll</ExcludeFromVSIX>的代码
  3. 注释掉或者删除这一行,保存后重新生成VSIX包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:29:42