如何在Azure DevOps中指定signtool.exe的位置?

6
在尝试使用Visual Studio Build任务从Azure Devops编译和发布应用程序时,我收到了以下错误信息:
An error occurred while signing: SignTool.exe was not found at path 
e:\<my app name>\(...)\signtool.exe. [e:\<my-project>\24\s\(...)\MyProjecName.csproj]

我检查过,发现 SignTool.exe 存在于以下位置...

C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool

...但我不知道如何告诉VS Build任务在那里查找它。

有没有办法让我告知构建任务正确的路径,或者覆盖它的某种方式?如果没有,我可能会考虑在每次运行时将SignTool复制到当前目录中,但这感觉像是一个肮脏的hack。

2个回答

3

我最终解决了这个问题,通过使用Powershell脚本检查本地构建路径中是否存在SignTool.exe,并在不存在时进行复制:

# Since MSBuild can't seem to access SignTool.exe from it's existing
# path, make a local copy (if none already exists):
$buildPath = "$(Build.Repository.LocalPath)"
$projPath = "$buildPath\MyProjectNameHere"
$pathToCheck = "$projPath\SignTool.exe"

$signToolPath = "C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\SignTool.exe"

if(-not (test-path "$pathToCheck")){
    write-host "Copying SignTool to $pathToCheck"
    copy  "$signToolPath" "$projPath"
}

现在至少MSBuild可以找到这个工具并且能够运行它。

1
我知道你已经解决了自己的问题,但是我在使用自托管代理上遇到了同样的问题,使用MSBuild任务。发布这篇文章以帮助其他人或在我忘记已经修复此问题时帮助我。

这个错误报告 帮助我确定问题是由于使用x64架构引起的。将架构更改为x86可以为我解决问题,而不必将可执行文件复制到构建文件夹中。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接