我创建了一个构建定义来在 Visualstudio.com 上在线构建桌面应用程序,该应用程序在任务构建解决方案(Visual Studio 构建)中失败,并出现以下错误,
[错误]C:\Program Files (x86)\Microsoft Visual
Studio\2017\Enterprise\MSBuild\15.0\Bin\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 帖子类似于此指定从管理员用户构建的解决方案,或手动安装 pfx 证书,但由于它们与个人计算机相关,并且我正在尝试在 Visualstudio.com 上配置持续集成,因此它们似乎对我。
请注意,我能够在本地计算机上成功构建。
如果您希望最终再次出现此问题,请按照以下步骤操作,
步骤 1:创建一个新的 VSTO 插件项目(任何 Excel/Word/Powerpoint)。
第 2 步:将其附加到 VSTS。
步骤 3:在应用程序属性的签名选项卡中,不要使用临时证书,而是创建一个新的受密码保护的证书(PFX - 在我的例子中是个人信息交换)并使用它来签署 ClickOnce 清单
STEP 4:尝试在本地机器上构建,将会成功。
STEP 5:推过去并尝试在 VSTS 上构建,您将得到与上面相同的错误。