2013-05-21 60 views
4

這是我嘗試我的應用程序可執行文件複製到另一個文件夾改變它的名字:的Visual Studio 2012後生成事件 - 錯誤代碼255

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,這取決於。用簡單的批處理文件運行該代碼就像一個魅力!

回答

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. 
相關問題