在过去的4年里,我一直在我的DLL项目和WiX项目(用于构建MSI)的部署解决方案中成功地使用PostBuild事件。最近,我们收到了一个新的证书和密码,因为以前的证书已过期。
我无法再构建我的解决方案,因为DLL的PostBuild事件和WiX PostBuild事件都失败了。
我在DLL项目和WiX项目中都注释掉了SignTool命令,两个项目都正确构建。
当以下signtool命令包含在PostBuild事件中时,我收到一个错误,PostBuild以-1 退出
EXEC : SignTool error : The specified PFX password is not correct.
DLL PostBuild事件调用SignTool如下:
"$(SolutionDir)Certificatessigntool.exe" sign /f "$(SolutionDir)CertificatesMyCertificate.pfx" /p Pass%word& -t http://timestamp.verisign.com/scripts/timstamp.dll /v "$(TargetDir)MyDll.dll"
当试图在命令提示符下运行相同的命令时,如果双引号未包含在中,则会收到以下消息。
SignTool Error: Missing filename.
'e' is not recognized as an internal or external command, operable program or batch file.
当试图通过命令行运行SignTool时,如果密码用双引号括起来,它就会起作用。
无论在将密码用双引号括起来方面做了什么,项目都不会编译。
我读过Visual Studio(和msbuild?)扫描输出中的某些单词,并确定该过程失败。我注意到,在运行SignTool进程时,我在进程结束时收到以下消息,并怀疑这是否与单词errors有关。
Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0
我不得不为特殊字符使用转义字符。
Brian Sutherland是正确的