在使用Visual Studio 2017时遇到项目生成失败的问题,出现错误:签名时出错: 未能对 bin/Debug/app.publish[项目名称].exe 签名。SignTool Error: No certificates were found that met all the given criteria.
目录
- 一、简单粗暴的解决办法
- 二、总结与归纳
一、简单粗暴的解决办法
这里先说下最简单的方法,只要取消掉项目的ClickOnce清单签名即可,此方法不可滥用,有一定的局限性和要注意的地方,后面会说明原因。具体操作方法如下:
1、 在VS右侧的解决方案资源管理器里找到生成失败的项目。
2、 右键打开项目的属性。
3、 在属性设置界面中找到签名选项卡。
4、 取消“为ClickOnce清单签名”勾选。
5、 关闭属性设置界面后然后重新生成下项目就可以了。
这个方法虽然简单,但是要根据自己的情况来,不能瞎操作。之所以这样说是因为SignTool Error的问题和签名证书有关,如果项目是属于公司的,或者说这个项目的部署有用到对应的证书,这种情况只能想办法重新安装证书,当然具体怎么操作还是得跟着自己的情况来,最好咨询下项目负责人。
但如果项目本身就没有要用到签名证书的业务,那情况就和我类似,糊里糊涂对项目(Windows应用程序的项目)进了发布操作,随后就莫名其妙的遇到无法生成老报错的情况。我回想了下自己当时操作,大概就是在发布向导界面瞎按了一通完成了发布,随后不小心把对应的证书文件删除了或者做了什么不可描述的操作,结果就出现项目生成时因为签名失败而出错。
PS:其实错误信息也提示很清楚了:"No certificates were found…",大意就是:签名错误的原因是没有找到符合给定规范的证书,所以要么证书丢了要么证书有问题咯。我的项目是一个控制台应用程序(只是用来测试几段代码的),VS2017用的是社区版本的。
二、总结与归纳
首先要明白VS2017中Windows应用程序的发布/部署默认使用的是ClickOnce技术进行部署,按照官方文档.aspx)的说明:
若要使用 ClickOnce 部署发布应用程序,必须用“公钥/私钥对”为应用程序的部署清单和应用程序清单签名。
所以问题关键点就是围绕着项目部署所使用的签名证书来的,如果仔细留意会发现项目第一次发布后,会自动生成一个.pfx文件(证书文件)。解决方法要么取消相关签名操作,要么修复有问题的证书(可以检查下证书是不是被删除了或者过期之类的)。
几个额外备注:
- Windows窗体或控制台应用程序都是属于Windows应用程序。
- 关于ClickOnce部署技术,本文没有详细说明,建议另外查阅资料。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/99053.html