Как исправить ошибку MSB3073 в событии после сборки?

Я'работаю над проектом, который требует, чтобы DLL, созданные при сборке моего решения, были скопированы из папки bin в другую папку, обе из которых находятся на моей машине, на диске C. Я написал пакетный файл, который использует xcopy для выполнения этой задачи, который вы можете увидеть здесь:

xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.dll" "C:\inetpub\wwwroot\AppServer\bin\"
xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.pdb" "C:\inetpub\wwwroot\AppServer\bin\"

Теперь я попробовал множество итераций этого файла, который находится по адресу:

C:\Users\scogan\Desktop\CopyFiles.bat

поэтому моя командная строка событий после сборки выглядит следующим образом:

call C:\Users\scogan\Desktop\CopyFiles.bat

Я запустил этот пакетный файл самостоятельно с двумя текстовыми файлами в папках на рабочем столе, и он работает нормально. Я также запустил его как есть с файлами, которые мне нужно скопировать, и это тоже работает нормально. Однако, когда я пытаюсь запустить его как событие после сборки, я получаю следующий результат:

1>  Organizr -> C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Client\bin\Debug\Organizr.exe
1>  File not found - Organizr.Services.dll
1>  0 File(s) copied
1>  0 File(s) copied
1>  File not found - Organizr.Services.pdb
1>c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(4291,5): error MSB3073: The command "call C:\Users\scogan\Desktop\CopyFiles.bat" exited with code 4.

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

Я также посмотрел, что такое MSB3073, и не нашел ничего, что могло бы мне помочь. Итак, мой вопрос в том, что я делаю неправильно? Может, абсолютные пути все портят? Любая помощь будет принята с благодарностью.

Решение

Поиграв с различными свойствами проекта, я обнаружил, что проблема заключается в порядке сборки проекта. Проект, который генерировал файлы, которые я хотел скопировать, был построен вторым, но проект, который запускал пакетный файл как событие после сборки, был построен первым, поэтому я просто прикрепил событие сборки ко второму проекту, и все работает нормально. Спасибо всем за помощь.

Комментарии (1)

Предпочтите задачу MsBuild "Копировать" в цели AfterBuild, а не в событии после сборки.

Добавьте эту цель в файл проекта и удалите событие PostBuildEvent.



Комментарии (6)

Если уж на то пошло, проблема в моем случае была вызвана использованием '/' в качестве разделителя каталогов в команде copy. Необходимо использовать обратные слэши.

Комментарии (0)