我有一个带有接下来两个编译后命令的应用程序:
call editbin /LARGEADDRESSAWARE $(TargetPath)
call editbin /LARGEADDRESSAWARE $(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)
并且工作正常。
但是,当我发布到服务器时,ClickOne 应用程序没有错误,但是当我尝试在客户端中安装时,文件的哈希值与清单中计算的值不同。
我尝试使用下一个命令:
sn -Ra $(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName) PublicPrivateKeyFile.snk
但不起作用,它显示下一条消息:
app.exe 不代表任何强名称程序集。
我想这是因为我所有的项目都有带有错误值的“签署程序集”选项。在使用 LARGEADDRESSAWARE 之前,ClickOnce 应用程序运行良好。
有必要为所有项目设置具有真值的“签署程序集”选项,或者有什么方法可以为该选项使用具有假值的 LARGEADDRESSAWARE?
编辑:
Mark Sowul 的解决方案工作正常:我还在 AfterBuild 中添加了下一行,以检查 AfterCompile 是否正常工作
call "$(VS110COMNTOOLS)vsvars32.bat"
dumpbin /headers "$(TargetPath)" > "$(TargetPath).info"
findstr "(>2GB)" "$(TargetPath).info"
set BUID_ERRORLEVEL=%ERRORLEVEL%
del "$(TargetPath).info"
if [%BUID_ERRORLEVEL%]==[0] echo EXE program updated to use more than 2GB
if [%BUID_ERRORLEVEL%]==[1] echo ERROR: EXE PROGRAM WAS NOT UPDATED TO USE MORE THAN 2GB
set ERRORLEVEL=%BUID_ERRORLEVEL%