我遇到过类似的问题,经过多年的 C# 开发(VS 2005 到 2012 年),从未设法找到一种方法来使用来自证书颁发机构的 .pfx 文件来对项目属性进行代码签名。有代码签名的程序集属性和项目设置,所有这些似乎都相互干扰,并且都不起作用。项目属性表单要求输入 pfx 的密码(似乎没有存储在任何地方),然后签名失败,因为密码已损坏。我怀疑 MS 中没有人真正将这个代码签名功能与购买的证书一起使用,仅使用 VS 在本地创建的自签名证书。
如果你想混淆你的代码,你还必须在混淆后对其进行签名,所以即使它们有效,你也不能使用任何这些方法。
我找到的唯一可靠的解决方案是使用 signtool.exe 作为构建后的步骤。一旦你设置好了,你可能不再关心是否有更好的方法。
当您购买证书时,它通常会直接安装到您 PC 的证书存储中,因此您可以在构建后的步骤中直接从存储中使用它进行代码签名,如下所示:
"C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool" sign
/n CertificateName
/tr http://timestamp.comodoca.com/rfc3161
"$(TargetPath)"
笔记:
- 您可能需要搜索以查找您 PC 上的 signtool.exe 的位置,并使用您可以找到的最新 SDK 版本中的那个来获取它的最新版本 - 您必须在后期使用完整路径 -构建命令使其工作
- “CertificateName”是您购买的证书的名称,在您的个人证书存储中
- 这里的 URL 是一个示例(在本例中为 Comodo 的时间戳服务器),只需将其更改为您自己的提供商的服务器
或者使用 .pfx 文件执行此操作:
"C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool" sign
/f CertificateFile.pfx /p Password
/tr http://timestamp.comodoca.com/rfc3161
"$(TargetPath)"
(其中 CertificateFile.pfx 是 pfx 文件,“Password”是使用该文件的密码。要从证书存储中获取 pfx 文件,请运行“certmgr.msc”并找到证书(可能在 Personal\Certificates 中) ,右键单击它并选择所有任务>导出...)
超级容易。为什么互联网上的任何地方都没有人(比如销售这些东西的认证机构)一开始就这么说?!