我在Visual Studio 2013中有一个c#.net项目。我已经成功签署了清单,告诉Visual studio也签署了程序集。
但是,应用程序exe文件未被签名。谷歌搜索后,我将以下内容添加到帖子构建事件
"C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "$(ProjectDir)certificate.pfx" /p mypassword "$(ProjectDir)obj\Debug\myapp.exe"
并尝试了
"C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "$(ProjectDir)certificate.pfx" /p mypassword "$(ProjectDir)bin\Debug\myapp.exe"
这似乎签署了exe,但是现在我的应用程序无法启动并给出错误:
文件,ECG Cloud Holter Assistant.exe,具有不同的计算哈希值 比清单中指定的那样。
所以我认为我需要在之前签署exe 它生成清单但是我该怎么做?
如果我没有包含post build命令,那么应用程序运行正常但发布者未知警告。
答案 0 :(得分:7)
尝试给出一个镜头:
1.右键单击winforms项目,然后选择“卸载项目”
2.再次右键单击项目,然后选择“编辑(yourprojectname).csproj”
3.转到文件底部,在结束“Project”标记之前添加以下部分:
<Target Name="AfterCompile">
<Exec Command="C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "$(ProjectDir)certificate.pfx" /p mypassword "$(ProjectDir)obj\Debug\myapp.exe" />
</Target>
4。保存proj文件并关闭它
5.再次右键单击项目并重新加载。
现在,如果您构建项目,您将看不到有关在输出窗口中签署应用程序可执行文件的任何信息。它只会在您发布时执行,并且不会有日志记录让您知道它已签名。你怎么知道它是否有效?转到您发布到的文件夹,然后查看Application Files文件夹。在新版本的文件夹中找到应用程序可执行文件。右键单击它,选择属性。查找名为“数字签名”的选项卡。如果找不到,则不签名。如果你看到它,请转到该标签;它将显示签名列表和证书的签名者。您可以双击签名者,然后查看签名证书。
我有一个类似的问题,并且能够在这篇博客文章的帮助下找到答案:https://robindotnet.wordpress.com/2013/02/24/windows-8-and-clickonce-the-definitive-answer-2/