MSBuild SignFile任务返回MSB3481:找不到签名证书

MSBuild SignFile任务返回MSB3481:找不到签名证书,msbuild,code-signing,signtool,Msbuild,Code Signing,Signtool,我最近得到了一个新的代码签名证书。我正在使用MSBuild的SignFile任务对应用程序清单进行签名。由于某些原因,任务正在返回: MSB3481: The signing certificate could not be located. Ensure that it is in the current user's personal store. 证书肯定在我的个人存储中,我可以在certmgr.msc中看到它。我相信我是以同一用户的身份登录的,因为我可以使用同一个人存储中的不同证书对清

我最近得到了一个新的代码签名证书。我正在使用MSBuild的SignFile任务对应用程序清单进行签名。由于某些原因,任务正在返回:

MSB3481: The signing certificate could not be located.
Ensure that it is in the current user's personal store.
证书肯定在我的个人存储中,我可以在certmgr.msc中看到它。我相信我是以同一用户的身份登录的,因为我可以使用同一个人存储中的不同证书对清单进行签名。不确定为什么找不到此新证书

我甚至可以将signtool.exe与新证书的SHA1一起使用来对文件进行签名。但我更愿意将现有的MSBuild用于SignFile任务。你知道这里会出什么问题吗


我还尝试导入带有或不带完整证书路径的证书。

我不确定这是否有帮助,但我记得如果您从管理单元字段复制指纹,第一个位置有一个“不可见”符号。 所以你的商店里找不到这个不可打印的指纹。尝试删除证书指纹开头的3-5个符号(包括引号),然后手动键入


还要考虑到指纹应该都是大写的(尽管属性显示为小写)。

就是这样!我在一个十六进制编辑器中打开了我的MSBUILD文件,指纹以“–Ž”开头,当我在记事本中编辑文件时,这些字符是不可见的。正如您所说,它们一定是在我从证书存储复制指纹时引入的。顺便说一句,对于其他希望解决此问题的人来说,指纹的情况在我的情况下似乎并不重要。:)我两次偶然发现了这个问题,然后我记起了——你永远不应该相信复制粘贴的指纹,总是检查那些看不见的小胆小鬼;)应该保留这些空间吗?假设我有一个看起来像这样的指纹,它应该如何在SignFile CertificateThumbprint属性中格式化?‎ac 5c 9e fb ff eb c4 2d 19 fd 90 89 d1 73 1e 90 2b 29 58 65通常应移除空间。