在Visual Studio Team Services构建期间以管理员身份运行Powershell或命令提示符

Edw*_*xon 11 strongname build delay-sign build-definition azure-devops

我正在开展一个延迟签署程序集的项目.我需要在构建期间多次使用强名称工具,以关闭强名称验证,然后在打包之前对程序集进行完全签名.我尝试使用powershell步骤来关闭验证,但它返回时出现此错误:

脚本:

$testprojs = gci Project.*.dll -r
$testprojs | % {
            sn -Vr $_
            write-output $("Turned off sn verification for " + $_.Name)
}
Run Code Online (Sandbox Code Playgroud)

错误:

Failed to open registry key -- Administrator permissions are needed to use
the selected options. Use an administrator command prompt to complete these tasks.
Run Code Online (Sandbox Code Playgroud)

所以我创建了一个运行第一个脚本的脚本,但添加了-elevated参数.这没有任何区别.

我也尝试使用命令提示步骤而不是powershell.这也返回了同样的错误.

For /r %g in ("Project.*.dll") DO sn -Vr %g
Run Code Online (Sandbox Code Playgroud)

当我尝试将相同的脚本rdp运行到构建代理程序机器本身时,它按预期工作.只有当它作为构建中的一个步骤运行时才会起作用.

有任何想法吗?

Edd*_*SFT 6

根据你的描述:

当我尝试将相同的脚本rdp运行到构建代理程序机器本身时,它按预期工作.

我假设您正在使用自己的构建代理进行构建.然后,这可能是由构建代理未运行管理员帐户引起的.请更新您的构建代理以使用管理员帐户运行,然后重试.

运行代理程序作为服务运行

如果部署代理程序以作为Windows服务运行,则可以从"服务"管理单元控制代理程序运行状态.运行services.msc并查找"VSO Agent()".如果需要更改登录帐户,请不要从服务管理单元执行此操作.相反,从提升的命令提示符,以C:\Agent\Agent\VsoAgent.exe /ChangeWindowsServiceAccount Run 交互方式运行:

否则,如果您安装了代理以交互方式运行,则可以通过启动Agent\VsoAgent.exe来启动代理.

有关详细信息,请参阅此链接:运行代理