Ошибка XCopy во время сборки, но не из командной строки?

У меня есть консольная программа, которая выводит свои exe и dll в указанный каталог.

В качестве события после сборки я пытаюсь скопировать все в этом каталоге в другой каталог.

Моя команда xcopy работает из командной строки, но не работает в VS2010? Как это может быть?

Я тестирую его, перейдя в папку проекта и выполнив следующее в командной строке. (это выход из VS2010)

В моем мероприятии после сборки:

xcopy "$(OutDir)*.*" "$(TargetDir)..\..\Foo\Bar\" /s /y /i

Из командной строки я выполняю следующее, что работает.

xcopy "..\..\..\..\MyDir\baz\zip\*.*" "c:\1\2\3\MyDir\baz\zip\..\..\Foo\Bar\" /s /y /i

Извините за названия каталогов.

Конечным результатом должны быть два каталога с одинаковыми файлами в них:

c:\1\2\3\MyDir\baz\zip
c:\1\2\3\MyDir\foo\bar 

Целевой путь относится к выходному каталогу.

Когда он выполняется как часть сборки, он дает код выхода 4.

Произошла ошибка инициализации. Недостаточно памяти или места на диске, либо вы ввели недопустимое имя диска или неверный синтаксис в командной строке.

Где я ошибаюсь?


person shenku    schedule 17.01.2013    source источник
comment
Вы можете заменить xcopy на xcopy.bat, который вы пишете, который регистрирует параметры и результаты, чтобы увидеть, что происходит.   -  person Miserable Variable    schedule 17.01.2013
comment
из любопытства, если вы замените относительные пути абсолютными путями, это сработает?   -  person Dustin Davis    schedule 17.01.2013


Ответы (2)


Понятно,

Я изменил команду xcopy в своем событии после сборки на:

xcopy "$(TargetDir)*.*" "$(TargetDir)..\..\Foo\Bar\" /s /y /i

Выполненный результат:

xcopy "c:\1\2\3\MyDir\baz\zip\*.*" "c:\1\2\3\MyDir\baz\zip\..\..\Foo\Bar\" /s /y /i

Какой VS2010 предпочтительнее, я думаю, вы не можете использовать относительный путь без базового пути.

person shenku    schedule 17.01.2013

Почему вы не вызываете пакетный файл, который запускает xcopy для необходимых файлов из источника в место назначения?

call "$(SolutionDir)scripts\copyifnewer.bat"

С copyifnewer.bat выглядит так:

IF NOT EXIST <destination> md <destination>
XCOPY /Y <file> <destination>
person Tommaso Belluzzo    schedule 17.01.2013