У меня есть проект с пост-сборкой:
copy $(ProjectDir)DbVerse\Lunaverse.DbVerse.*.exe $(TargetDir)
На моей машине все работает нормально. У меня есть новый разработчик, который всегда получает ошибку «завершился с кодом 1». Я попросил ее запустить ту же команду в командной строке DOS, и она сработала нормально. Что может быть причиной этого? Есть ли способ добраться до реальной ошибки?
Мы оба используем Visual Studio 2008.
visual-studio-2008
post-build
Тим Скотт
источник
источник
Ответы:
В пути к одному из имен папок у нее был пробел, а не кавычки.
источник
Тот, у кого есть "пинги", помог мне ... но можно объяснить немного лучше ...
Для меня решение было изменить:
к этому:
Надеюсь, это сработает для вас. :-)
источник
Я добавил это для будущих посетителей, так как это довольно активный вопрос.
ROBOCOPY завершает работу с «кодами успеха» меньше 8. См .: http://support.microsoft.com/kb/954404
Это означает, что:
Поэтому я легко решил это , добавив это в конец командного файла
Предложите обрабатывать ошибки ROBOCOPY таким образом
Путаница возникнет, когда файлы не скопированы = нет ошибок в VS. Затем, когда есть изменения, файлы копируются, ошибки VS, но все, что хотел разработчик, было сделано.
Дополнительный совет: не используйте паузу в скрипте, так как это станет неопределенной паузой в сборке VS. при разработке сценария используйте что-то вроде
timeout 10
. Вы заметите это и закомментируете это, а не получите зависшую сборку.источник
Моя причина для кода 1 заключалась в том, что целевая папка была доступна только для чтения. Надеюсь, это кому-то поможет! У меня было событие пост-сборки, чтобы сделать копию из одного каталога в другой, и место назначения было только для чтения. Итак, я просто пошел и снял отметку с атрибута только для чтения в каталоге и во всех его подкаталогах! Просто убедитесь, что это безопасный каталог!
источник
Получите монитор процесса от SysInternals и настройте его так, чтобы Lunaverse.DbVerse (в поле Path) смотрел на результат операции. Оттуда должно быть очевидно, что пошло не так
источник
Мне пришлось запустить VS от имени администратора, чтобы моя копия после сборки работала в защищенной ОС ".. \ Common7 \ IDE \ PrivateAssemblies".
источник
Для тех, кто использует « копию » команду в Строительства События ( командной строке события Pre-сборки или / и командной строке события после сборки ) из проекта -> Свойства : вы « копировать » параметры команды должны выглядеть как здесь:
copy "source of files" "destination for files"
. Не забывайте использовать кавычки (чтобы избежать проблем с пробелами в адресных строках).источник
У меня была аналогичная проблема, но конкретно в среде сборки Jenkins. Чтобы решить эту проблему, я переключился с использования команды копирования в событии post build на использование цели копирования.
Я изменил это:
к этому:
и теперь он отлично работает.
Конкретная ошибка, которую я получал, была:
источник
Я смог исправить свой код 1, запустив Visual Studio от имени администратора. По-видимому, у него не было доступа для выполнения команд оболочки без администратора.
источник
В качестве хорошей практики я предлагаю вам заменить событие после сборки на задачу копирования файла сборки MS .
источник
Что касается меня, я должен был убедиться, что программа, в которую я копировал файл, не работала в то время. В синтаксисе ошибок не было. Надеюсь, это кому-то поможет.
источник
Я получил ту же ошибку. У меня был% в пути назначения, который нужно было экранировать
должен быть
источник
Хорошо, это проблема со многими решениями, поэтому я просто публикую свое, чтобы дать людям больше подсказок. Моя ситуация состоит в том, чтобы дважды проверить папки на вашем пути и убедиться, что все они существуют на вашем компьютере. Например: «$ (SolutionDir) \ partBin \ Bin \ $ (ProjectName) .pdb», но «Bin» отсутствует в папке partBin.
источник
$(SolutionDir)
является избыточным.Для тех, кто использует команду «копировать» в событиях сборки (командная строка события перед сборкой и / или командная строка события после сборки) из проекта -> Свойства: целевая папка должна существовать
источник
Так много решений ...
В моем случае мне пришлось сохранить bat-файл в кодировке, отличной от Unicode (Western, Windows). По умолчанию, когда я добавлял файл в визуальную студию (и, вероятно, мне следовало сделать это за пределами VS), он добавлялся в кодировке UTF-8.
источник
У меня была такая же проблема, и оказалось, что это потому, что я переименовал проект. Я вошел в свойства проекта и изменил имя сборки и корневое пространство имен на имя проекта, и после этого он отлично работал!
источник
Еще один ответ ...
В моем случае у меня был проект Visual Studio 2017, ориентированный как на .Net Standard 1.3, так и .Net Framework 2.0. Это было указано в файле .csproj следующим образом:
У меня также была командная строка после сборки, например:
Другими словами, я пытался скопировать .Net Framework .dll, созданную сборкой, в альтернативное место.
Это не помогло с этой ошибкой, когда я сделал перестройку:
После долгого разочарования я наконец определил, что происходит следующее: Rebuild удалил все выходные файлы, затем выполнил сборку для .Net Standard 1.3, а затем попытался запустить командную строку события после сборки, которая не удалась, потому что файл, который нужно скопировать еще не построили.
Таким образом, решение заключалось в изменении порядка сборки, т.е. сначала сборка для .Net Framework 2.0, а затем для .Net Standard 1.3.
Теперь это работает, с незначительной ошибкой, когда командная строка события после сборки запускается дважды, поэтому файл копируется дважды.
источник
В моем случае мне пришлось
cd
(сменить каталог) перед вызовом файла bat, потому что внутри файла bat была операция копирования с указанием относительных путей.источник