错误MSB3325:无法导入以下密钥文件

时间:2019-08-12 13:01:45

标签: msbuild azure-devops assembly-signing

我在Azure DevOps中托管了一个项目,并且该构建失败并显示错误消息:

  

错误MSB3325:无法导入以下密钥文件:xxxx.pfx。钥匙   文件可能受密码保护。要更正此问题,请尝试导入   再次证书或将证书手动安装到Strong   用以下密钥容器名称命名CSP:VS_KEY_xxxx

在更改项目以使用新生成的受密码保护的pfx签名证书对程序集进行签名之后,会发生这种情况。

我尝试了其他SO帖子中提供的各种修复程序,但似乎没有任何效果。

任何具有天蓝色开发技能的人都可以帮助我解决这种情况。

2 个答案:

答案 0 :(得分:0)

  

错误MSB3325:无法导入以下密钥文件

您可以创建一个PowerShell脚本,并在构建定义中添加一个PowerShell脚本步骤,以在VSBuild步骤之前导入新的证书文件:

我以前使用的PowerShell脚本:

$pfxpath = 'pathtoees.pfx'
$password = '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()

它在我这边工作正常。

您可以查看similar thread了解更多详细信息。

希望这会有所帮助。

答案 1 :(得分:0)

您可以使用SnInstallPfx.exe并将其作为Powershell任务添加到管道中

- task: PowerShell@2
  env:
    SN_INSTALL_PFX: $(snInstallPfx.secureFilePath)
    MYCERTIFICATE_PFX: $(myCertificatePfx.secureFilePath)
    MYCERTIFICATE_PFX_PASSWORD: $(myCertificatePfxPassword)
  inputs:
    targetType: 'inline'
    script: '&"$($ENV:SN_INSTALL_PFX)" "$($ENV:MYCERTIFICATE_PFX)" "$($ENV:MYCERTIFICATE_PFX_PASSWORD)"'

pfx,exe和密码作为安全文件和变量存储在管道库中。

有关更多信息,请参见以下blog article