zoukankan      html  css  js  c++  java
  • VS2017 签名时出错: 未能对 binDebugapp.publish*.exe 签名。SignTool Error: No certificates were found

    在使用Visual Studio 2017时遇到项目生成失败的问题,出现错误:签名时出错: 未能对 binDebugapp.publish[项目名称].exe 签名。SignTool Error: No certificates were found that met all the given criteri

    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文件(证书文件)。解决方法要么取消相关签名操作,要么修复有问题的证书(可以检查下证书是不是被删除了或者过期之类的)。

    几个额外备注:

    1. Windows窗体或控制台应用程序都是属于Windows应用程序。
    2. 关于ClickOnce部署技术,本文没有详细说明,建议另外查阅资料。

    本文转自:https://shiyousan.com/post/636422963761134191

  • 相关阅读:
    HTML学习笔记
    JSP与Servlet的跳转及得到路径方法整理(转)
    Servlet 学习笔记6:Cookie
    工作=娱乐=爱[龙]
    幸福的方法[龙]
    10张海报,激励人生[龙]
    8个方法让你安然度过低效率的日子[龙]
    使用空余时间的20个有效途径
    人生三点钟
    2013计划
  • 原文地址:https://www.cnblogs.com/eve612/p/14090515.html
Copyright © 2011-2022 走看看