TFS 2015 升级:构建定义参数解析问题
TFS 2015 upgrade: Build definition parameters parsing issue
我们刚刚升级到 TFS2015,现在我们的大部分构建都无法运行。错误如下所示:
Exception Message: The build controller cannot deserialize the process
parameters of the build. Make sure the process parameters are
compatible with the assemblies on the build machine. Details: Set
property 'Microsoft.TeamFoundation.Build.Common.BuildParameter.Json'
threw an exception. (type Exception)
[...]
Exception Message: TF401070: Could not deserialize the JSON string
provided. Details:
Error parsing comment. Expected: *, got p. Path 'MSBuildArguments', line 1, position 991. (type
BuildParameterSerializationException)
Exception Stack Trace: at Microsoft.TeamFoundation.Build.Common.BuildParameter.set_Json(String
value)
我知道我必须更改 MSBuild 参数以便它们可以被解析,但它不会让我更新构建定义的进程选项卡(提示错误并且所有字段都是空的)所以我可以' 编辑参数。
这个问题有解决办法吗?我可以用其他方式编辑 MSBuild 参数吗?
首先,确保您的构建机器应与您的服务器版本相匹配。
下一步是重新编译此构建机器使用的任何自定义 activity 程序集(如果有)。
问题解决了。
在另一台服务器上重新安装了 TFS2013,将 Visual Studio 重新指向该 TFS 服务器,然后我可以获得构建参数。
打开构建定义进程选项卡时出现错误,清除了构建定义的所有字段。所以我基本上把所有的旧值都一个一个插入,直到失败。
错误是我作为 MSBuild 参数传递的 TFS 路径,TFS2015 不喜欢路径开头的“$”(我猜它会自动认为它是 TFS 变量,但没有发生与 2013)所以我将其更改为 ASCII 代码“%24”。工作得很好。
如果您安装 "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.0\Newtonsoft.Json.dll”复制到文件夹"C:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools"
c) 关闭 "elevated command prompt" 并打开一个常规的,例如 "MS VS 2015 Command Prompt"
d) 确认上面的错误信息消失了。
有类似的问题 - 但仅当构建过程存在 "MSBuild Arguments"(“/maxcpucount”)时才会发生异常。进一步调查使我发现创建的转储文件中缺少构建过程信息。 user7982840 指定的解决方案纠正了两个问题:
- 转储文件中缺少进程详细信息
- "设置属性
'Microsoft.TeamFoundation.Build.Common.BuildParameter.Json'
引发异常。"
我们刚刚升级到 TFS2015,现在我们的大部分构建都无法运行。错误如下所示:
Exception Message: The build controller cannot deserialize the process parameters of the build. Make sure the process parameters are compatible with the assemblies on the build machine. Details: Set property 'Microsoft.TeamFoundation.Build.Common.BuildParameter.Json' threw an exception. (type Exception)
[...]
Exception Message: TF401070: Could not deserialize the JSON string provided. Details: Error parsing comment. Expected: *, got p. Path 'MSBuildArguments', line 1, position 991. (type BuildParameterSerializationException) Exception Stack Trace: at Microsoft.TeamFoundation.Build.Common.BuildParameter.set_Json(String value)
我知道我必须更改 MSBuild 参数以便它们可以被解析,但它不会让我更新构建定义的进程选项卡(提示错误并且所有字段都是空的)所以我可以' 编辑参数。
这个问题有解决办法吗?我可以用其他方式编辑 MSBuild 参数吗?
首先,确保您的构建机器应与您的服务器版本相匹配。
下一步是重新编译此构建机器使用的任何自定义 activity 程序集(如果有)。
问题解决了。
在另一台服务器上重新安装了 TFS2013,将 Visual Studio 重新指向该 TFS 服务器,然后我可以获得构建参数。
打开构建定义进程选项卡时出现错误,清除了构建定义的所有字段。所以我基本上把所有的旧值都一个一个插入,直到失败。
错误是我作为 MSBuild 参数传递的 TFS 路径,TFS2015 不喜欢路径开头的“$”(我猜它会自动认为它是 TFS 变量,但没有发生与 2013)所以我将其更改为 ASCII 代码“%24”。工作得很好。
如果您安装 "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.0\Newtonsoft.Json.dll”复制到文件夹"C:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools"
c) 关闭 "elevated command prompt" 并打开一个常规的,例如 "MS VS 2015 Command Prompt"
d) 确认上面的错误信息消失了。
有类似的问题 - 但仅当构建过程存在 "MSBuild Arguments"(“/maxcpucount”)时才会发生异常。进一步调查使我发现创建的转储文件中缺少构建过程信息。 user7982840 指定的解决方案纠正了两个问题:
- 转储文件中缺少进程详细信息
- "设置属性 'Microsoft.TeamFoundation.Build.Common.BuildParameter.Json' 引发异常。"