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

VSTS构建含Newtonsoft.Json的类库项目出现未知测试报错求助

解决VSTS构建中Newtonsoft.Json相关测试错误的方案

我明白你现在在VSTS(也就是现在的Azure DevOps)构建类库项目时遇到的Newtonsoft.Json相关问题有多头疼——尤其是那些莫名出现的测试错误和找不到的Newtonsoft.Json.Net20.sln文件引用,确实很让人困惑。结合你已经做的操作,我给你几个针对性的排查和解决步骤:

1. 锁定构建任务的目标解决方案,避免意外引用外部文件

  • 打开你的VSTS构建定义,找到Visual Studio Build任务,检查“解决方案”字段的配置。如果用了通配符(比如**/*.sln),很可能是代理在工作目录里找到了缓存的第三方解决方案文件(比如Newtonsoft.Json.Net20.sln)。建议把路径明确指定为你自己的三个类库项目对应的解决方案文件,比如$(Build.SourcesDirectory)/你的解决方案名.sln。
  • 添加一个Delete Files任务放在构建任务之前,清理代理的工作目录,避免缓存干扰。设置要删除的路径为$(Build.SourcesDirectory)/**和$(Build.BinariesDirectory)/**,确保每次构建都从干净的状态开始。

2. 清理项目中意外引入的Newtonsoft测试包依赖

  • 逐个打开你的类库项目的.csproj文件,搜索是否存在<PackageReference>或<Reference>节点引用了Newtonsoft.Json.Tests这类测试相关的包。如果有,直接删除这些节点——这类测试包本来就不该出现在生产类库项目里。
  • 针对每个项目单独执行Update-Package -reinstall -ProjectName 你的项目名称命令,确保每个项目的NuGet依赖都是完全重新安装的,没有残留的旧版本或错误引用。

3. 确认框架兼容性与绑定重定向配置

  • 虽然你已经把项目升级到.NET Framework 4.6.1,但还是要确认每个项目的目标框架设置完全一致,并且你安装的Newtonsoft.Json版本支持4.6.1(通常10.0.1及以上版本都支持,可在NuGet包管理器里核对版本)。
  • 检查项目的app.config文件,添加或更新Newtonsoft.Json的绑定重定向配置,确保所有引用都指向同一个版本,避免版本冲突。示例配置如下(替换成你实际使用的版本号):
<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>

4. 清理代理的NuGet缓存

  • 如果使用的是私有代理,登录代理机器,执行nuget locals all -clear命令清理所有NuGet缓存,避免旧的或错误的包文件干扰构建。如果是托管代理,这个步骤可以跳过,但可以尝试重新运行构建,让代理重新拉取干净的包。

按照这些步骤逐一排查,应该能解决你遇到的测试错误和莫名的解决方案引用问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:39:34