将构建代理升级到VS 2017后无法签署ClickOnce清单

时间:2018-03-15 22:28:02

标签: tfs clickonce tfsbuild

我们有一对ClickOnce应用程序的解决方案,这些应用程序作为构建的一部分进行签名和发布。我们有一个内部部署的TFS 2017服务器,但直到最近我们的项目都是使用VS 2015构建的。在这种情况下,我们能够构建,签署和发布ClickOnce应用程序并自动显示,一切都很好。< / p>

我们最近部署了一个安装了VS 2017的新构建代理,我无法获得该代理来构建项目。 MSBuild步骤尝试使用错误对输出进行签名失败:

error MSB3482: An error occurred while signing: Failed to sign bin\x86\Release\app.publish\FooBar.exe

错误消息中没有其他信息 - 没有解释签名失败的原因。构建代理作为服务安装,其登录凭据设置为真实域帐户,该帐户也是构建计算机上的本地管理员,并且证书安装在该用户的证书存储中。

顺便说一句,如果我从构建代理程序的日志中取出msbuild命令行并在代理帐户下登录时在构建计算机上运行该命令,则构建阶段可以正确签名输出完成;它只在运行TFS代理服务时失败。

我不知道还有什么地方可以找到为什么signtool步骤失败;还有其他人看过这个问题吗?

2 个答案:

答案 0 :(得分:1)

这不是一个完美的“解决方案”,但是一种解决方法是停止构建代理Windows服务并从PowerShell中以交互模式运行构建代理。

PS C:\agent_directory> .\run.cmd
Scanning for tool capabilities.
Connecting to the server.
2018-07-24 18:19:39Z: Listening for Jobs 

答案 1 :(得分:0)

在安装VS 2017后,似乎构建代理未检测到环境更改(可能是MSBuild Capability)或者检测到的MSBuild版本有问题或者错过了其他相关功能。

只需检查代理功能,确保检测到功能 MSbuild 15.0 。一般来说,价值应该是这样的:

MSBuild_15.0    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\

MSBuild_15.0_x64 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\amd64\

因此,您可以尝试以下方法来缩小问题范围:

  1. 如果他们都在那里,那么只需尝试重新启动代理服务 再检查一下。
  2. 如果错过了,您可以尝试手动添加它们(在“设置”中&gt; 代理队列 - &gt;代理池 - &gt;代理 - &gt;能力 - &gt;加 能力)。之后再次触发构建。你可以加 其他一些需要的功能也是一样的。
  3. 部署新代理,然后再次检查。
  4. 尝试使用 MSBuild 任务构建并指定MSBuild 直接位于其中。然后再检查一下。
  5. 重新创建证书,检入更改,然后重试。 (转到项目的属性 - &gt; 选择签名标签 - &gt;点击“创建测试证书” 按钮)