我无法使用强名称密钥签名构建项目 - 总是提示标题中的消息。
是的,该项目最初是从另一台机器上复制过来的。但是,即使我通过“项目属性”中的“签名”选项卡添加新密钥,仍会显示此错误。
我尝试以管理员身份运行Visual Studio,并尝试手动将密钥添加到Windows证书存储区,但没有成功。
帮帮我吧!
编辑:对于一个新项目,我不会遇到这个错误,但我很想让这个现有项目正常工作。即使我创建一个新证书,它也无法工作!
我无法使用强名称密钥签名构建项目 - 总是提示标题中的消息。
是的,该项目最初是从另一台机器上复制过来的。但是,即使我通过“项目属性”中的“签名”选项卡添加新密钥,仍会显示此错误。
我尝试以管理员身份运行Visual Studio,并尝试手动将密钥添加到Windows证书存储区,但没有成功。
帮帮我吧!
编辑:对于一个新项目,我不会遇到这个错误,但我很想让这个现有项目正常工作。即使我创建一个新证书,它也无法工作!
我终于找到了解决方案。
编辑相关项目的.csproj
文件。
删除以下代码行:
<PropertyGroup>
<ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
试试这个:
右键单击您的项目 → 转到 属性 → 点击屏幕左侧的签名 → 取消选中 签署 ClickOnce 文件清单 → 保存并构建
删除与证书存储中签名证书相关的以下信息
<PropertyGroup>
<ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
<ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
<GenerateManifests>true</GenerateManifests>
<SignManifests>false</SignManifests>
</PropertyGroup>
前往Visual Studio中的项目“属性”,然后转到签名选项卡。
确保关闭“签署ClickOnce清单”选项。
或者
1.使用记事本打开.csproj文件。
2.删除与证书存储中签名证书相关的以下信息 xxxxx xxxxxx xxxxxxxx.pfx true false `
对我有用。
手动将密钥添加到Windows证书存储区是不够的。证书只包含已签名的公钥。您还必须导入与证书中公钥相关联的私钥。.pfx文件包含单个文件中的公钥和私钥。这就是您需要导入的内容。
如果您只需要在本地构建项目或解决方案,那么像其他人建议的那样删除签名可能是一个非常简单的解决方案。
但是,如果您在自动化构建服务器(如TeamCity)上遇到此错误,该服务器用于构建实际发布的部署或分发件,则可能要考虑如何将此证书正确安装到构建机器上的证书存储中,以便在构建结束时获得已签名的软件包。
通常不建议将任何PFX证书提交到源代码控制中,因此如何在构建过程中获取这些文件是另一个问题,但有时人们确实将此文件与解决方案代码一起存储,因此您可以在项目文件夹中找到它。
您所需做的就是在构建服务器上的适当帐户下安装此证书即可。
下载Windows Sysinternals中的PsExec。
打开命令提示符,输入以下内容。它将生成一个新的命令提示符,作为本地系统运行(假设您的TeamCity正在默认的本地系统帐户下运行):
> psexec.exe -i -s cmd.exe
在这个新的命令提示符中,切换到包含证书的目录,并输入要安装的文件名(将文件名更改为您自己的):
> mykey.pfx
导入证书向导将启动。按照提示选择所有建议的默认值。
运行构建。
所有功劳归于Stuart Noble(然后我相信是进一步归于Laurent Kempé ☺)。
刚碰到这个问题(又一次),由于没有将PFX证书包含在代码中,导致安全性出现问题。
对于本地测试,例如Debug构建,此解决方案的主要程序员让我进入“属性”、“签名”,点击“创建测试证书”。在我们的设置中,他说只需单击确定,但如果有必要,可以在此处输入强密码。