Post 事件构建在 Visual studio 2013 中退出并出现代码 1 错误

Post event build exit with code 1 error in Visual studio 2013

这是脚本:

copy /y "$(SolutionDir)Libs\Detect.dll" "$(SolutionDir)$(ConfigurationName)"
call editbin.exe /LARGEADDRESSAWARE SER.EXE > post.txt
call dumpbin.exe /HEADERS SER.EXE > post1.txt

错误是

Error 306 The command "copy /y "C:\dev\blah\Libs\Detect.dll" "C:\dev\blah\Debug" call editbin.exe /LARGEADDRESSAWARE SER.EXE > post.txt call dumpbin.exe /HEADERS SER.EXE > post1.txt" exited with code 1.

Post event build exit with code 1 error in Visual studio 2013

只有一件事需要确认:这个SER.EXE是只在发布模式下执行,还是只有这个SER.EXE存在于发布文件夹中,应该在调试和发布模式下执行?

如果这个SER.EXE只需要在release中执行,Lex的建议值得考虑。预生成事件和 Post-生成事件 运行 作为批处理脚本。您可以对 $(ConfigurationName) 执行条件语句。例如:

copy /y "$(SolutionDir)Libs\Detect.dll" "$(SolutionDir)$(ConfigurationName)"
if $(ConfigurationName) == Release call editbin.exe /LARGEADDRESSAWARE "SER.EXE"> post.txt
if $(ConfigurationName) == Release call dumpbin.exe /HEADERS SER.EXE > post1.txt

如果release文件夹中存在这个SER.EXE,需要在debug和release模式下执行,只需要在命令中指定release文件夹即可:

 call editbin.exe /LARGEADDRESSAWARE "Release\SER.EXE"> post.txt
 call dumpbin.exe /HEADERS "Release\SER.EXE"> post1.txt

当然,你还需要确保SER.EXE可以执行,你可以使用下面的命令在控制台应用程序项目中测试:

call editbin.exe /LARGEADDRESSAWARE "$(TargetPath)"> post.txt

注意:当你想在调试和发布模式下使用这个post-build事件时,你应该为所有配置添加命令行,否则这个命令只会作用于一种模式(提醒一下):

希望对您有所帮助。