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

TFS 2017构建报错:调用Invoke传2个参数触发Microsoft.Build.Shared异常

解决VS2017安装后Web应用构建报错的问题

这种问题我之前碰到过好几次,核心原因基本都是VS2017安装后,代理机器上的MSBuild版本被“抢占”了,导致构建过程调用了和项目不兼容的MSBuild实例。先把你提到的错误信息贴出来方便参考:

Exception calling "Invoke" with "2" argument(s): "The type initializer for 'Microsoft.Build.Shared.F..."

下面是我亲测有效的排查和解决步骤:

  • 先确认当前使用的MSBuild版本
    在构建脚本里加一行命令:msbuild -version,运行后看输出的路径和版本号。如果显示的是VS2017自带的MSBuild(路径通常是C:\Program Files (x86)\Microsoft Visual Studio\2017\<你的版本>\MSBuild\15.0\Bin),那就是版本优先级的问题。

  • 指定明确的MSBuild路径
    最简单的解决办法是直接在构建任务里调用之前正常工作的MSBuild绝对路径。比如如果之前用的是.NET Framework自带的版本,路径一般是C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe,把构建命令改成这个路径,强制使用兼容的版本。

  • 调整环境变量优先级
    如果不想修改构建脚本,可以调整代理机器的系统环境变量:

    1. 打开系统属性的环境变量设置
    2. 找到PATH变量,把原来正常的MSBuild所在路径移到最前面
    3. 重启代理服务,让环境变量生效
  • 检查项目兼容性(如果需要用VS2017的MSBuild)
    如果你确实要基于VS2017构建,那得检查项目文件:

    1. 用VS2017打开你的Hello World项目,让它自动更新项目的构建配置
    2. 确认项目的目标框架版本、构建工具版本和VS2017兼容
    3. 保存项目后再重新提交构建
  • 清理MSBuild缓存
    有时候缓存文件会导致奇怪的初始化错误,试试删除代理机器上的%LOCALAPPDATA%\Microsoft\MSBuild目录,然后重新运行构建,让MSBuild重新生成缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:49:34