15

我正在处理一个我们延迟签署程序集的项目。我需要在构建过程中使用强名称工具几次,关闭强名称验证,然后在打包程序集之前对其进行完全签名。我尝试使用 powershell 步骤关闭验证,但它返回此错误:

脚本:

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

错误:

Failed to open registry key -- Administrator permissions are needed to use
the selected options. Use an administrator command prompt to complete these tasks.

所以我创建了一个脚本来运行第一个脚本,但添加了 -elevated 参数。这没什么区别。

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

For /r %g in ("Project.*.dll") DO sn -Vr %g

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

有任何想法吗?

4

1 回答 1

10

根据你的描述:

当我尝试对构建代理机器本身运行相同的脚本 rdp 时,它按预期工作。

我假设您正在使用自己的构建代理进行构建。那么这可能是由于构建代理没有使用管理员帐户运行造成的。请更新您的构建代理以使用管理员帐户运行,然后重试。

运行代理 作为服务运行

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

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

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

于 2016-04-12T00:56:54.293 回答