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

多.NET框架项目引用Newtonsoft.Json致Bar.Desktop编译失败求助

解决方案:分两步处理版本冲突与文件锁定问题

看起来你遇到的是Newtonsoft.Json版本冲突和编译文件被锁定的复合问题,咱们一步步来解决:

一、先解决Newtonsoft.Json版本冲突警告

这个警告是因为Bar.Desktop引用的Bar.Core使用了适配net20的Newtonsoft.Json,而自身又安装了适配net45的版本,导致引用逻辑冲突,可通过以下方式解决:

  • 添加绑定重定向(最常用方案)
    打开Bar.Desktop项目的App.config文件,在<configuration>节点内添加绑定重定向配置,强制所有Newtonsoft.Json的引用都指向你指定的版本(建议用Bar.Desktop安装的net45版本,它兼容net20的功能):

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
          <!-- 把oldVersion范围改成你实际涉及的版本,newVersion填Bar.Desktop安装的版本号 -->
          <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    

    注意:publicKeyToken是Newtonsoft.Json的固定公钥,无需修改;版本号要替换成你实际安装的对应版本。

  • 统一NuGet包版本(根源解决)
    右键解决方案 → 选择「管理解决方案的NuGet程序包」,搜索Newtonsoft.Json,尝试给两个项目安装同一个同时兼容net20和net45的版本(比如Newtonsoft.Json 12.0.3,它支持多框架),从根源避免版本冲突。

  • 启用自动绑定重定向
    打开Bar.Desktop项目的属性 → 「应用程序」标签页,勾选「自动生成绑定重定向」,VS会自动帮你处理版本冲突的重定向配置。

二、解决“文件被锁定”的编译失败问题

这个错误一般是编译后的dll/exe被其他进程占用导致的,试试这些方法:

  • 彻底清理后重建
    先点击VS顶部菜单「生成」→「清理解决方案」,然后手动删除两个项目目录下的bin和obj文件夹(这一步比内置清理更彻底),最后再点击「生成解决方案」。

  • 结束占用进程
    打开任务管理器,查找是否有Bar.Desktop.exe、Bar.Core.dll相关的进程,或者VS的调试宿主进程(比如vshost.exe),结束这些进程后再重新编译。

  • 禁用VS实时调试或扩展
    某些VS扩展、实时调试功能可能会锁定编译文件:

    • 打开「工具」→「选项」→「调试」→「实时」,取消勾选所有实时调试选项;
    • 暂时禁用所有第三方VS扩展,重启VS后再尝试编译。
  • 更改输出目录
    打开Bar.Desktop项目属性 →「生成」标签页,修改「输出路径」为一个新的文件夹(比如bin\Debug_new),避开之前被锁定的文件路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:43:09