我在Azure DevOps中托管了一个项目,并且该构建失败并显示错误消息:
错误MSB3325:无法导入以下密钥文件:xxxx.pfx。钥匙 文件可能受密码保护。要更正此问题,请尝试导入 再次证书或将证书手动安装到Strong 用以下密钥容器名称命名CSP:VS_KEY_xxxx
在更改项目以使用新生成的受密码保护的pfx签名证书对程序集进行签名之后,会发生这种情况。
我尝试了其他SO帖子中提供的各种修复程序,但似乎没有任何效果。
任何具有天蓝色开发技能的人都可以帮助我解决这种情况。
答案 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。