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

问题描述 投票:0回答:2

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

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

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

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

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

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

tfs clickonce tfsbuild
2个回答
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. 如果错过了它们,您可以尝试手动添加它们(在设置 - >代理队列 - >代理池 - >代理 - >功能 - >添加功能)。之后再次触发构建。您可以使用相同的方式添加一些其他所需的功能。
  3. 部署新代理,然后再次检查。
  4. 尝试使用MSBuild任务进行构建,并直接在其中指定MSBuild位置。然后再检查一遍。
  5. 重新创建证书,签入更改,然后再次尝试。 (转到项目的属性 - >选择签名选项卡 - >单击'创建测试证书'按钮)
© www.soinside.com 2019 - 2024. All rights reserved.