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

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

当尝试使用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。

c# azure devops code-signing signtool
1个回答
0
投票

我最终通过使用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将找到该工具并能够运行它。

© www.soinside.com 2019 - 2024. All rights reserved.