我们刚刚升级到TFS2015,现在我们的大多数构建都无法正常工作。错误如下所示:
异常消息:生成控制器无法反序列化进程 构建的参数。确保工艺参数 与生成计算机上的程序集兼容。细节:设置 属性 'Microsoft.TeamFoundation.Build.Common.BuildParameter.json' 抛出了一个例外。(类型异常)
[...]
异常消息:TF401070:无法反序列化 JSON 字符串 提供。详: 解析注释时出错。预期:*,得到 p。路径"MSBuildArguments",第 1 行,位置 991。(类型 BuildParameterSerializationException) Exception Stack Trace: at Microsoft.TeamFoundation.Build.Common.BuildParameter.set_Json(String 值)
我知道我必须更改 MSBuild 参数才能解析它们,但它不允许我更新构建定义的"进程"选项卡(提示错误并且所有字段均为空),所以我无法编辑参数。
这个问题有解决方案吗?是否可以以其他方式编辑 MSBuild 参数?
如果您安装"Microsoft Visual Studio Team Foundation Server 2015 Power Tools"并使用命令"tfpt.exe builddefinition",请确保修复以下错误消息:
1)修复上述错误消息的方法是将丢失的dll("Newtonsoft.Json.dll")复制到文件夹"C:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools"。
a) 确保打开提升的命令提示符
b) 将文件"%CommonProgramFiles%\Microsoft Shared\Team Foundation Server\14.0\Newtonsoft.Json.dll"复制到文件夹"C:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools"
c) 关闭"提升的命令提示符"并打开常规,例如"MS VS 2015 命令提示符"
d) 确认上述错误消息已消失。
首先,确保生成计算机应与服务器版本匹配。
下一步是重新编译此生成计算机使用的任何自定义活动程序集(如果有)。
解决了这个问题。
在另一台服务器中重新安装TFS2013,将Visual Studio重新指向该TFS服务器,然后我可以获取生成参数。
错误 wen 我打开了"生成定义过程"选项卡,清除了生成定义的所有字段。所以我基本上一个接一个地插入所有旧值,直到失败。
错误是我作为 MSBuild 参数传递的 TFS 路径,TFS2015不喜欢路径开头的"$"(我想它会自动认为它是一个 TFS 变量,2013 年没有发生),所以我将其更改为 ASCII 代码"%24"。工作得很好。
有类似的问题 - 但仅当构建进程存在"MSBuild 参数"("/maxcpucount")时才会发生异常。 进一步的调查使我发现创建的转储文件中缺少生成过程信息。user7982840 指定的解决方案纠正了这两个问题:
- 转储文件中缺少进程详细信息
- "设置属性'Microsoft.TeamFoundation.Build.Common.BuildParameter.json'抛出了一个例外。