MSB3321诊断代码

本文介绍MSB3321错误代码。

消息文本

MSB3321: Importing key file 'value' was canceled.

DESCRIPTION

MSBuild 尝试使用 Authenticode 证书对 ClickOnce 程序集清单进行签名,但无法从给定密钥文件导入私钥时,会出现此错误。

在 ClickOnce 部署过程中,或在 MSBuild 中运行 Publish 目标时,程序集会用强名称 Authenticode 证书进行签名。该证书可能是临时的“开发测试”证书(通常在开发期间使用),也可能是由证书颁发机构(CA)颁发的受信任证书。 此方案在 命令行生成 ClickOnce 应用程序时介绍。

若要在文件中将证书与私钥 .pfx 一起使用,需要使用密码对其进行验证,以便信任证书;然后,MSBuild 可以使用该证书。 使用 Visual Studio 生成和签名清单时,请在指定密钥文件名时在 Visual Studio 中提供密码。 但是,如果在另一台计算机(例如生成服务器)上生成同一项目,而无需安装或使用 Visual Studio,则必须将密钥添加到生成服务器的受信任证书存储中,并使用密码进行验证。 之后,MSBuild 可以使用它来对 ClickOnce 程序集进行签名。

决议

如果是在未安装 Visual Studio 的计算机上进行构建(例如设置构建服务器时),请将 Authenticode 证书和私钥添加到 Windows 受信任的发布者证书存储。 可以使用 certmgr 将证书添加到系统存储。 添加后,在尝试对程序集进行签名时,MSBuild 将可以使用该程序集,直到证书过期或删除。

还可以对 .NET 项目使用 dotnet-mage.exe ,也可以使用 .NET Framework 项目的 mage.exe (清单程序集生成)来生成和签名 ClickOnce 清单。 请参阅 手动部署 ClickOnce 应用程序

适用于

MSBuild 的所有版本