【问题标题】:Visual Studio 2012 Post Build Events - Error Code 255Visual Studio 2012 生成后事件 - 错误代码 255
【发布时间】:2013-05-21 00:12:23
【问题描述】:

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

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,这取决于。使用普通的批处理文件运行该代码就像一个魅力!

【问题讨论】:

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


    【解决方案1】:

    您需要使用 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.
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        相关资源
        最近更新 更多