Tfs 将生成代理升级到VS 2017后无法签署ClickOnce清单

Tfs 将生成代理升级到VS 2017后无法签署ClickOnce清单,tfs,clickonce,tfsbuild,Tfs,Clickonce,Tfsbuild,我们有一个解决方案,它包含一对ClickOnce应用程序,作为构建的一部分进行签名和发布。我们有一个内部TFS 2017服务器,但直到最近,我们的项目都是使用VS 2015构建的。在这种情况下,我们能够自动构建、签署和发布ClickOnce应用程序和清单,一切都很好 我们最近部署了一个新的构建代理,安装了VS2017,但我无法让该代理构建该项目。MSBuild步骤尝试对输出进行签名失败,出现错误: error MSB3482: An error occurred while signing: F

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

我们最近部署了一个新的构建代理,安装了VS2017,但我无法让该代理构建该项目。MSBuild步骤尝试对输出进行签名失败,出现错误:

error MSB3482: An error occurred while signing: Failed to sign bin\x86\Release\app.publish\FooBar.exe
错误消息中没有其他信息-没有解释签名失败的原因。生成代理作为服务安装,其登录凭据设置为真实域帐户,该帐户也是生成计算机上的本地管理员,并且证书安装到该用户的证书存储中

另一方面,如果我从生成代理的日志中取出msbuild命令行,并在以代理帐户登录时在生成计算机上运行该命令,则生成阶段将以正确签名的输出顺利完成;它仅在通过TFS代理服务运行时失败


我不知道还有什么地方可以找到signtool步骤失败的原因;是否还有其他人看到此问题?

生成代理似乎没有检测到环境更改,可能是此处的MSBuild功能有问题,或者检测到的MSBuild版本有问题,或者在您安装VS 2017后错过了其他相关功能

只需检查代理功能,确保检测到功能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\
因此,您可以尝试以下方法来缩小问题范围:

如果它们都存在,只需尝试重新启动代理服务,然后 再检查一遍。 如果丢失了它们,您可以尝试在设置中手动添加它们-> 代理队列->代理池->代理->功能->添加 能力。然后再次触发构建。你可以加上 其他一些需要的功能也是如此。 部署一个新代理,然后再次检查。 尝试使用MSBuild任务生成并指定MSBuild 位置直接在它里面。然后再检查一遍。 重新创建证书,签入更改,然后重试。转到项目的属性-> 选择签名选项卡->单击“创建测试证书” 按钮
这不是一个完美的解决方案,但解决方法是停止生成代理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 

你检查过你的证书了吗?它可能会过期证书是全新的。这些似乎都没有帮助;所有功能都在那里,部署新代理没有任何效果。但是,如果我们停止代理服务并以用户身份运行代理,构建工作正常,因此我假设存在与证书存储相关的权限问题?