VS2017 签名时出错: 未能对 bin\Debug\app.publish\*.exe 签名。SignTool Error: No certificates were found

VS2017 签名时出错: 未能对 bin\Debug\app.publish\*.exe 签名。SignTool Error: No certificates were found

 2017-09-30  十有三  1  浏览:3万+  .NET技术  C#

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

 

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部署技术,本文没有详细说明,建议另外查阅资料。

版权声明:本文由十有三创作,采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请务必署名-保留作者名称及出处:https://shiyousan.com/post/636422963761134191

### 解决方案 在 ROS 中,如果遇到 `fatal error: geometry_msgs/Wrench.h: No such file or directory` 的错误提示,通常是因为未正确安装或配置 `geometry_msgs` 包。以下是解决问题的方法: #### 1. 安装 `geometry_msgs` 包 确保已安装 `geometry_msgs` 包。可以通过以下命令来检查并安装该包: ```bash sudo apt-get install ros-$ROS_DISTRO-geometry-msgs ``` 其中 `$ROS_DISTRO` 是当前使用的 ROS 版本代号(例如 `noetic`, `melodic` 或其他版本)。此命令会下载并安装 `geometry_msgs` 及其依赖项[^1]。 #### 2. 配置 CMakeLists.txt 和 package.xml 文件 为了使项目能够找到 `geometry_msgs` 提供的消息类型,在项目的 `CMakeLists.txt` 文件中需添加如下内容: ```cmake find_package(catkin REQUIRED COMPONENTS ... geometry_msgs ... ) ``` 同,在 `package.xml` 文件中也需要声明对该包的依赖关系: ```xml <depend>geometry_msgs</depend> ``` 完成上述修改后,重新编译工作空间以应用更改: ```bash catkin_make source devel/setup.bash ``` #### 3. 检查 Include 路径 确认源文件中包含了正确的头文件路径。对于 `Wrench` 类型,应包含以下头文件: ```cpp #include <geometry_msgs/Wrench.h> ``` 如果没有正确指定头文件路径,则可能导致编译器无法定位到所需的 `.h` 文件[^3]。 --- ### 示例代码片段 下面是一个简单的示例程序,展示如何使用 `geometry_msgs::Wrench` 数据结构: ```cpp #include <ros/ros.h> #include <geometry_msgs/Wrench.h> int main(int argc, char** argv) { ros::init(argc, argv, "wrench_publisher"); ros::NodeHandle nh; ros::Publisher wrench_pub = nh.advertise<geometry_msgs::Wrench>("wrench_topic", 10); geometry_msgs::Wrench wrench; wrench.force.x = 10.0; wrench.force.y = 20.0; wrench.force.z = 30.0; while (ros::ok()) { wrench_pub.publish(wrench); ros::spinOnce(); } return 0; } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值