标志组件没有错误,但没有在VS2013中签名

时间:2013-11-13 23:14:17

标签: .net visual-studio .net-assembly digital-signature strongname

我有两个解决方案,两个解决方案都选中了每个项目属性页面的“签名”页面上的“签署程序集”。

解决方案A签署所有项目并且没有问题。实际上,解决方案A抱怨说程序集没有强名称,并且无法构建最终的应用程序集。我查了一下,那个组件上缺少数字签名。

该程序集是在另一个解决方案中创建的,解决方案B,并在其中引用。我转到了该解决方案并添加了相同的语句来签署程序集。我也像在解决方案A中一样检查了一次清单时的点击。

解决方案B构建没有问题,没有警告,也没有错误。 Visual Studio构建了DLL和随附的测试应用程序。我先清理解决方案,调试并发布,然后构建解决方案,没有数字签名。

我购买了一个数字证书,我使用浏览器选择了该证书。数字证书具有密码并具有PFX扩展名。

解决方案A要求我输入解决方案中每个项目的密码。我设置每个项目来签署程序集。解决方案B从未向我询问密码。

当我遇到问题时,我想从头开始重新创建解决方案和项目,只需将现有的CS文件添加到解决方案中。基本上,我重新创建了项目和解决方案文件。这有完全相同的结果。我甚至比较了解决方案A和B中的汇编信息文件Project \ AssemblyInfo.cs,并没有看到真正的区别。

UPDATE:

每个请求,这是构建窗口的输出。遗憾的是,默认情况下没有详细的构建信息。我希望如此。

BuildVersionIncrement: Pre-build process : Completed
1>------ Build started: Project: SolutionB, Configuration: Release Any CPU ------
1>  SolutionB -> F:\Projects\SolutionB\Versions\2014\SolutionB\bin\Release\SolutionB.dll
2>------ Build started: Project: TesterSolutionB, Configuration: Release Any CPU ------
2>  TesterSolutionB -> F:\Projects\SolutionB\Versions\2014\TesterSolutionB\bin\Release\TesterSolutionB.exe
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
BuildVersionIncrement: Post-build process : Completed

更新2:我正在使用C#.Net。一个项目是一个类库,另一个是Winforms项目。我选择了.Net Framework 4.5.1。


可能是什么原因以及如何解决问题?遗憾的是,输出窗口没有显示详细的构建细节。

1 个答案:

答案 0 :(得分:2)

我想通过将工作项目的详细构建输出与非工作项目进行比较。

恕我直言,我会将此问题标记为Microsoft Visual Studio 2013(以及之前的版本)中的缺陷,因为它并不明显。不知怎的,以前我意识到该怎么做,但现在忘记了。

无论如何,我错过了在项目属性页面的“构建事件”选项卡中添加“构建后事件命令行”条目。可以假设在签名页面上指定您不必再次执行此操作的所有信息。不管。

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f <path to pfx file> /p <mypassword> /t http://timestamp.verisign.com/scripts/timstamp.dll "$(TargetDir)$(TargetFileName)"

此外,为其他配置添加类似的行。此添加使“签名”选项卡无效。