Visual Studio 2012后期构建事件 - 错误代码255

时间:2013-05-21 00:12:23

标签: c# .net visual-studio post-build-event

这是我尝试将我的应用程序可执行文件复制到另一个文件夹,更改它的名称:

IF $(ConfigurationName) == Release (
    SET DESTINATION=$(ProjectDir)Output\Distribution

    IF NOT EXIST "%DESTINATION%" ( MD "%DESTINATION%" )

    XCOPY /Q /Y "$(TargetPath)" "%DESTINATION%"
    RENAME "%DESTINATION%\$(TargetFileName)" "$(TargetName).Plain$(TargetExt)"
)

我已经尝试了一切使它工作,但它总是抛出错误代码255或1,这取决于。使用普通批处理文件运行该代码就像魅力一样!

2 个答案:

答案 0 :(得分:3)

您需要使用 SETLOCAL EnableDelayedExpansion 命令启用延迟扩展。在构建后事件的顶部执行此操作。之后,您可以使用非%VARIABLE_NAME%来访问您的变量,但是!VARIABLE_NAME! (在变量名称的两侧使用感叹号,而不是在常规批处理文件中使用的百分比符号。)

所以,例如

SETLOCAL EnableDelayedExpansion
IF $(ConfigurationName) == Release (
    SET DESTINATION=$(ProjectDir)Output\Distribution
    echo My destination dir is !DESTINATION!
)

这将输出类似

的内容
My destination dir is D:\Work\Projects\PBExample\Output\Distribution.

答案 1 :(得分:1)

由于Post-build事件命令行实际上作为批处理文件运行,因此您需要通过将它们加倍到%%来转义%这样的字符:

https://stackoverflow.com/a/13552702/74585