Что означает "выход с кодом 9009" во время этой сборки?
Что означает это сообщение об ошибке? Что я мог сделать, чтобы исправить эту проблему?
AssemblyInfo.cs вышел с кодом 9009
Проблема, вероятно, возникает как часть шага после сборки в решении.NET в Visual Studio.
36 ответов
Вы пытались указать полный путь к команде, которая выполняется в команде события до или после сборки?
Я получал ошибку 9009 из-за xcopy
команда события после сборки в Visual Studio 2008.
Команда
"xcopy.exe /Y C:\projectpath\project.config C:\compilepath\"
выход с кодом 9009.
Но в моем случае это было также с перебоями. То есть сообщение об ошибке сохраняется до перезагрузки компьютера и исчезает после перезагрузки компьютера. Это вернулось после некоторой отдаленно связанной проблемы, которую я еще должен обнаружить.
Однако в моем случае указание полного пути к команде решило проблему:
c:\windows\system32\xcopy.exe /Y C:\projectpath\project.config C:\compilepath\
Вместо просто:
xcopy.exe /Y C:\projectpath\project.config C:\compilepath\
Если у меня нет полного пути, он запускается некоторое время после перезапуска, а затем останавливается.
Также, как упоминалось в комментариях к этому сообщению, если в пути есть пробелы, то нужно ввести кавычки вокруг команды. Например
"C:\The folder with spaces\ABCDEF\xcopy.exe" /Y C:\projectpath\project.config C:\compilepath\
Обратите внимание, что этот пример с пробелами не тестировался.
Код ошибки 9009 означает, что файл ошибки не найден. Все причины, приведенные в ответах, являются хорошим источником вдохновения, чтобы понять, почему, но сама ошибка просто означает неверный путь.
Это происходит, когда вам не хватает некоторых параметров среды для использования инструментов Microsoft Visual Studio 2010 x86.
Поэтому попробуйте добавить в качестве первой команды ваши шаги после сборки:
call "$(DevEnvDir)..\Tools\vsvars32.bat"
Это должно быть помещено перед любой другой командой.
Он установит среду для использования инструментов Microsoft Visual Studio 2010 x86.
Скорее всего, у вас есть место на вашем пути следования.
Вы можете обойти это, указав пути, таким образом оставляя пробелы. Например:
xcopy "$(SolutionDir)\Folder Name\File To Copy.ext" "$(TargetDir)" /R /Y /I
Была такая же переменная после изменения переменной PATH из переменных среды в Win 7. Помогло возвращение к стандартному.
У меня была ошибка 9009, когда мой сценарий событий после сборки пытался запустить пакетный файл, который не существует по указанному пути.
Моя точная ошибка была
The command "iscc /DConfigurationName=Debug "C:\Projects\Blahblahblah\setup.iss"" exited with code 9009.
9009 означает, что файл не найден, но на самом деле не удалось найти часть команды "iscc".
Я исправил это, добавив ";C:\Program Files\Inno Setup 5 (x86)\"
в системную переменную среды "path"
В моем случае мне пришлось сначала "CD" (Изменить каталог) перейти к нужному каталогу, прежде чем вызывать команду, так как вызываемый мной исполняемый файл находился в каталоге моего проекта.
Пример:
cd "$(SolutionDir)"
call "$(SolutionDir)build.bat"
Я вызвал эту ошибку, когда отредактировал переменную среды Path. После редактирования я случайно добавил Path=
в начало строки пути. С такой неверно сформированной переменной пути мне не удалось запустить XCopy в командной строке (команда или файл не найдены), и Visual Studio отказалась выполнить шаг после сборки, сославшись на ошибку с кодом 9009.
XCopy обычно находится в C:\Windows\System32. Как только переменная среды Path позволила разрешить XCopy в командной строке DOS, Visual Studio хорошо построила мое решение.
Если скрипт на самом деле делает то, что ему нужно, и это всего лишь Visual Studio, сообщающая вам об ошибке, которую вы можете просто добавить:
exit 0
в конце вашего сценария.
Проверьте орфографию. Я пытался назвать исполняемый файл, но имя было написано с ошибкой, и это дало мне exited with code 9009
сообщение.
Ответ tfa был опущен, но на самом деле может вызвать эту проблему. Благодаря Hanzolo я посмотрел в окне вывода и нашел следующее:
3>'gulp' is not recognized as an internal or external command,
3>operable program or batch file.
3>D:\dev\<filepath>\Web.csproj(4,5): error MSB3073: The command "gulp clean" exited with code 9009.
После запуска npm install -g gulp
Я перестал получать эту ошибку. Если вы получаете эту ошибку в Visual Studio, проверьте окно вывода и посмотрите, является ли проблема неустановленной переменной среды.
Другой вариант:
сегодня я вызываю интерпретатор python из cron в win32 и беру ExitCode (%ERRORLEVEL%) 9009, потому что системная учетная запись, используемая cron, не имеет пути к каталогу Python.
Проблема в моем случае произошла, когда я попытался использовать команду в командной строке для события Post-build в моей библиотеке классов тестирования. Когда вы используете кавычки, например, так:
"$(SolutionDir)\packages\NUnit.Runners.2.6.2\tools\nunit" "$(TargetPath)"
или если вы используете консоль:
"$(SolutionDir)\packages\NUnit.Runners.2.6.2\tools\nunit-console" "$(TargetPath)"
Это исправило проблему для меня.
Я исправил это, просто перезапустив Visual Studio - я только что запустил dotnet tool install xxx
в окне консоли и VS еще не подобрал новые переменные среды и / или параметры пути, которые были изменены, поэтому быстрый перезапуск решил проблему.
Также убедитесь, что в окне редактирования событий после сборки в вашем проекте нет разрывов строк. Иногда копирование команды xcopy из Интернета, когда она многострочная, и вставка ее в VS, вызывает проблемы.
Я добавил "> myFile.txt" в конец строки на этапе предварительной сборки, а затем проверил файл на наличие ошибки.
Для меня это произошло после обновления пакетов nuget с одной версии PostSharp до следующей в большом решении (проект ~80). У меня есть ошибки компилятора для проектов, которые имеют команды в событиях PreBuild.
"cmd" не распознается как внутренняя или внешняя команда, работающая программа или командный файл. C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1249,5): ошибка MSB3073: команда "cmd /c C:\GitRepos\main\ServiceInterfaces\DEV.Config\". PreBuild.cmd ServiceInterfaces "завершен с кодом 9009.
Переменная PATH была повреждена и стала слишком длинной с несколькими повторными путями, связанными с PostSharp.Patterns.Diagnostics. Когда я закрыл Visual Studio и открыл его снова, проблема была исправлена.
Еще один вариант файла не найден из-за пробелов в пути. В моем случае в скрипте msbuild. Мне нужно было использовать стиль HTML & quot; строки в команде exec.
<!-- Needs quotes example with my Buildscript.msbuild file -->
<Exec Command=""$(MSBuildThisFileDirectory)\wix\wixscript.bat" $(VersionNumber) $(VersionNumberShort)"
ContinueOnError="false"
IgnoreExitCode="false"
WorkingDirectory="$(MSBuildProjectDirectory)\wix" />
Для меня было недостаточно места на диске, и файлы, которые не могли быть записаны, должны были появиться позже. В других ответах упоминались отсутствующие файлы (или файлы с неправильным именем / неправильной ссылкой по имени), но основной причиной была нехватка места на диске.
Так же, как и другие ответы, в моем случае это было из-за отсутствующего файла. Чтобы узнать, что это за отсутствующий файл, вы можете перейти к окну вывода, и оно сразу покажет вам, что пропало.
Чтобы открыть окно вывода в Visual Studio:
- Ctrl + Alt + O
- Вид> Вывод
Мое решение было просто: вы пытались выключить и снова включить его? Я перезагрузил компьютер, и проблема исчезла.
У меня была аналогичная проблема, и я получил:
Команда ""C:\Users<user>\Downloads\sandbox-attacksurface-analysis-tools-c02ed8ba04324e54a0a188ab9877ee6aa372dfac\packages\XmlDoc2CmdletDoc.0.3.0\build..\tools" -excludeParameterSets "" -strict "C:\Users<user>\Downloads\sandbox-attacksurface-analysis-tools-c02ed8ba04324e54a0a188ab9877ee6aa372dfac\bin\Debug\NtObjectManager.dll"" завершился с кодом 9009.
Я, когда в свойствах проекта> Build и снял флажокXML documentation file
:
После этого я пересобрал проект и он исчез. Странно то, что после того, как я снова установил флажок и перестроил его, ошибка не вернулась.
Призрачная ошибка..
Проверить
Output
вкладку внимательно.
Это должно выявить причину проблемы.
(Например, в моем случае это было связано с комментарием:
'#' is not recognized as an internal or external command, operable program or batch file.
)
Я тоже столкнулся с этим 9009
проблема, возникающая при перезаписи ситуации.
В основном, если файл уже существует, и вы не указали /y
Переключатель (который автоматически перезаписывает) эта ошибка может произойти при запуске из сборки.
Это довольно просто, у меня возникла эта проблема, и смутил простой провал.
Приложение использует аргументы командной строки, я удалил их, а затем добавил их обратно. Внезапно проект не удалось построить.
Visual Studio -> Свойства проекта -> убедитесь, что вы используете вкладку "Отладка" (не вкладка "События сборки") -> Аргументы командной строки
Я использовал текстовую область и Post/Pre-build, что было неправильно в этом случае.
Случилось с коллегой. Если среда разработки - это Windows, а проект Visual Studio находится на диске C:. Убедитесь, что Visual Studio запускается с правами администратора. Просто щелкните правой кнопкой мыши и выберите "Запуск от имени администратора". Вы также можете перейти в свойства проекта Visual Studio -> Advance -> и включить "Запуск от имени администратора".
У меня была такая же ошибка, вызванная моим сценарием пост-сборки, и я попытался запустить сценарий построчно в командной строке. Наконец, я выяснил, что основная причина заключается в том, что я не заполнил недостающую информацию в файле.nuspec, т.е. заменил все переменные между $ и $ фактическим значением, например, заменив $author$ своим именем.
Мое решение состояло в том, чтобы создать копию файла и добавить шаг в задачу сборки, чтобы скопировать мой файл поверх оригинала.
Еще одна причина: если ваше событие перед сборкой ссылается на путь к бину другого проекта, и вы видите эту ошибку при запуске msbuild, но не Visual Studio, то вам нужно вручную расположить проекты в файле *.sln (с текстовым редактором), чтобы что проект, на который вы нацеливаетесь в событии, построен перед проектом события. Другими словами, msbuild использует порядок, в котором проекты перечислены в файле *.sln, тогда как VS использует знание зависимостей проекта. Это произошло, когда после wixproj был указан инструмент, который создает базу данных для включения в wixproj.