2

Я новичок в группе, и я, возможно, допустил ошибку. Но у меня есть следующие события после сборки:Post build SET command и% variable% error

IF $(ConfigurationName) == Release (
    SET RELEASEPATH = "C:\Users\Synercoder\Documents\Visual Studio 2010\Releases\$(ProjectName)" 
    IF NOT EXIST %RELEASEPATH% (
     GOTO MAKEDIR 
    ) ELSE (
     GOTO DIREXISTS 
    ) 
    :MAKEDIR 
    MKDIR %RELEASEPATH% 
    :DIREXISTS 
    COPY /Y "$(TargetDir)$(ProjectName).dll" "%RELEASEPATH%\$(ProjectName).dll" 
    COPY /Y "$(TargetDir)$(ProjectName).pdb" "%RELEASEPATH%\$(ProjectName).pdb" 
) 

Но это не удается с кодом 255. Если я заменю все %RELEASEPATH% фактический путь он работает. Я искал команду SET, и я думаю, что я использовал ее правильно ... Но, как я уже сказал, я новичок в партии.

Любая подсказка, почему это не удается в моем случае?

Если я использую следующий код, это мой выход:

SET RELEASEPATH = test 
ECHO "%RELEASEPATH%" 
SET RELEASEPATH = "test" 
ECHO "%RELEASEPATH%" 

Выход:

"" 
"" 

ответ

4

Прежде всего, пробелы имеют значение! Я хотел бы удалить ", если я вам и только добавить их, когда используется переменная

SET RELEASEPATH=C:\Users\Synercoder\Documents\Visual Studio 2010\Releases\$(ProjectName) 

IF NOT EXIST "%RELEASEPATH%" 

MKDIR "%RELEASEPATH%" 
+0

, если я использую SET RELEASEPATH = C: \ Users \ Synerc ... с или без кавычек («C: \ ...») не имеет значения. Все же то же (см. дополнительный пример) – SynerCoder

+0

Удалили ли вы разнесенные между RELEASEPATH и =? – rene

+0

Черт, я смотрел в " забыл пространства. Ты спас свой день. – SynerCoder

2

Мое решение было следующее:.

SET RELEASEPATH=%USERPROFILE%\Documents\Visual Studio 2010\Releases\$(ProjectName) 
IF $(ConfigurationName) == Release (
    IF NOT EXIST %RELEASEPATH% (
     MKDIR "%RELEASEPATH%" 
    ) 
    COPY /Y "$(TargetDir)$(ProjectName).dll" "%RELEASEPATH%\$(ProjectName).dll" 
    COPY /Y "$(TargetDir)$(ProjectName).pdb" "%RELEASEPATH%\$(ProjectName).pdb" 
)