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

标签 c# azure-devops msbuild code-signing signtool

尝试使用 对从 Azure Devops 编译和发布的应用程序进行签名时Visual Studio 构建 任务,我收到以下错误消息:

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 复制到当前目录中,但这感觉就像一个肮脏的黑客。

最佳答案

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

关于c# - 如何在 Azure DevOps 中指定 signtool.exe 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62262835/

相关文章:

c# - 在代码隐藏中为 xaml 元素设置多重绑定(bind)

git - VSTS : Different merge commit message

c# - MonoDevelop 错误 : Unknown MSBuild failure. 请尝试重新构建项目

c# - 构建环境 CodeAnalysis 任务无法实例化

c# - 修改 .NET 项目文件和引用属性

c# - 获取队列中元素的索引c#

c# - 筛选和编辑列表数据

c# - 用于简单实时圆检测的霍夫变换替代方案

azure - 从 Visual Studio Online 部署到 Azure 网站时,将额外文件部署到站点目录

Azure DevOps 在一段时间内更改了工作项列表