Пост-сборка завершена с кодом 1 - PullRequest
102 голосов
/ 21 ноября 2008

У меня есть проект с событием после сборки:

copy $(ProjectDir)DbVerse\Lunaverse.DbVerse.*.exe  $(TargetDir)

На моей машине каждый раз работает нормально. У меня есть новый разработчик, который всегда получает ошибку «Exited with code 1». Я заставил ее выполнить ту же команду в командной строке DOS, и она работала нормально. Что может быть причиной этого? Есть ли способ добраться до настоящей ошибки?

Мы оба используем Visual Studio 2008.

Ответы [ 17 ]

2 голосов
/ 22 ноября 2008

В качестве хорошей практики предлагаю заменить событие после сборки на MS Build File Copy .

2 голосов
/ 28 августа 2014

Хорошо, это проблема многих решений, поэтому я просто публикую свое, чтобы дать людям больше подсказок. Моя ситуация состоит в том, чтобы дважды проверить папки в вашем пути и убедиться, что все они существуют на вашем компьютере. Например: «$ (SolutionDir) \ partBin \ Bin \ $ (ProjectName) .pdb», но «Bin» отсутствует в папке partBin.

2 голосов
/ 01 декабря 2012

Я только что получил ту же ошибку. У меня есть% в пути назначения, который нужно экранировать

c:\projects\%NotAnEnvironmentVariable%

должно быть

c:\projects\%%NotAnEnvironmentVariable%%
2 голосов
/ 21 марта 2016

Для тех, кто использует команду «копировать» в событиях сборки (командная строка события перед сборкой или / и командная строка события после сборки) из проекта -> Свойства: целевая папка должна существовать

0 голосов
/ 19 июня 2018

Еще один ответ ...

В моем случае у меня был проект Visual Studio 2017, нацеленный как на .Net Standard 1.3, так и .Net Framework 2.0. Это было указано в файле .csproj следующим образом:

<TargetFrameworks>netstandard1.3;net20</TargetFrameworks>

У меня также была командная строка события после сборки:

copy "E:\Yacks\YacksCore\YacksCore\bin\net20\Merlinia.YacksCore.dll" "E:\Merlinia\Trunk-Debug\Shared Bin\"

Другими словами, я пытался скопировать .Net Framework .dll, созданную при сборке, в другое место.

Это не удалось с этой ошибкой, когда я сделал Rebuild:

MSB3073 The command "copy "E:\Yacks\YacksCore\YacksCore\bin\net20\Merlinia.YacksCore.dll" "E:\Merlinia\Trunk-Debug\Shared Bin\"" exited with code 1.

После большого разочарования я наконец-то определил, что Rebuild удалил все выходные файлы, затем выполнил сборку для .Net Standard 1.3, а затем попытался запустить командную строку события после сборки, что не удалось из-за файла Копирование еще не было построено.

Таким образом, решение состояло в том, чтобы изменить порядок сборки, то есть сначала собрать для .Net Framework 2.0, а затем для .Net Standard 1.3.

<TargetFrameworks>net20;netstandard1.3</TargetFrameworks>

Теперь это работает, с небольшим затруднением в том, что командная строка события после сборки запускается дважды, поэтому файл копируется дважды.

0 голосов
/ 14 февраля 2014

Так много решений ...

В моем случае мне пришлось сохранить файл bat с кодировкой не-Unicode (Western, Windows). По умолчанию, когда я добавил файл в visual studio (и, вероятно, мне следовало сделать это вне VS), он был добавлен с кодировкой UTF-8.

0 голосов
/ 06 июля 2015

У меня была такая же проблема, и оказалось, что это потому, что я переименовал проект. Я вошел в свойства проекта и изменил Имя сборки и Корневое пространство имен на имя проекта, и после этого оно отлично работало!

...