使用MSB3325 VSTS构建失败,无法导入PFX密钥文件

时间:2018-04-27 13:36:20

标签: msbuild azure-devops azure-pipelines azure-pipelines-build-task

我创建了一个构建定义,用于在visualstudio.com上在线构建桌面应用程序,该任务在任务构建解决方案(Visual Studio构建)中失败,并出现以下错误,

  

[错误] C:\ Program Files(x86)\ Microsoft Visual   工作室\ 2017 \企业\的MSBuild \ 15.0 \斌\ Microsoft.Common.CurrentVersion.targets(3156,5):   错误MSB3325:无法导入以下密钥文件:   Sixmod5Certificate.pfx。密钥文件可能受密码保护。至   更正此问题,尝试再次导入证书或手动安装   使用以下密钥将证书发送到强名称CSP   容器名称:VS_KEY_3B2BCC84AE4E26F1

我按照https://developercommunity.visualstudio.com/content/problem/156086/vsts-build-msb3325-cannot-import-the-following-key.html

指定的解决方案

然后按照https://stackoverflow.com/a/48698229/3531672的规定 我在构建任务之前添加了一个powershell脚本任务,如下所示,

[CmdletBinding()]
param(  
    [Parameter(Mandatory)][string] $pfxpath,
    [Parameter(Mandatory)][string] $password
)

Add-Type -AssemblyName System.Security
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cert.Import($pfxpath, $password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]"PersistKeySet")
$store = new-object system.security.cryptography.X509Certificates.X509Store -argumentlist "MY", CurrentUser
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]"ReadWrite")
$store.Add($cert)
$store.Close()

但没有运气,

有不同的SO帖子类似于指定从Admin用户构建的解决方案,或手动安装pfx证书,但由于它们与个人计算机相关,我试图在visualstudio.com上配置持续集成,因此它们不会对我来说似乎很有用。

请注意我能够在我的本地计算机上成功构建。

如果您希望在最后重新生成此问题,请按照以下步骤操作

步骤1:创建一个新的VSTO Addin项目(任何Excel / Word / Powerpoint)。

第2步:将其附加到VSTS。

步骤3:在签名应用程序属性选项卡中,而不是使用临时证书,创建一个新的密码保护证书(PFX - 我的个人信息交换)并使用它来签署ClickOnce Manifest

第4步:尝试在本地机器上构建,它会成功。

第5步:将其推过并尝试在VSTS上构建,您将得到与上述相同的错误。

2 个答案:

答案 0 :(得分:0)

我从“项目属性->签名”页面中取消选中了“对程序集签名”复选框,并且所有操作都像一个超级按钮。该构建已通过VSTS成功签名。不知何故,我错过了许多与该问题相关的SO线程中提供的解决方案。

答案 1 :(得分:0)

我从“项目属性->签名”页面中取消选中了“对程序集签名”复选框,并且一切正常。该版本已通过VSTS成功签名。不知何故,我错过了许多与该问题相关的SO线程中提供的解决方案。

这对我有用。谢谢。