0

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

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

该程序集是在另一个解决方案解决方案 B 中创建的,并在其中引用。我去了该解决方案并添加了相同的语句以对程序集进行签名。我还像在解决方案 A 中一样检查了对单击清单进行签名。

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

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

解决方案 A 要求我输入解决方案中每个项目的密码。我将每个项目都设置为对程序集进行签名。解决方案 B 从未要求我输入密码。

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

更新:

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

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。


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

4

1 回答 1

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)"

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

于 2013-11-14T00:05:09.173 回答