Що означає "вийшов із кодом 9009" під час цієї збірки?


292

Що означає це повідомлення про помилку? Що я можу зробити, щоб виправити це питання?

AssemblyInfo.cs вийшов з кодом 9009


Проблема, ймовірно, виникає як частина кроку після складання рішення .NET у Visual Studio.


7
ОП не повертається, щоб виправити цю проблему, але в ній багато відповідей і багато соку Google. Отже, спробуємо зробити висновок про проблему?
Ентоні Мастрен

13
Вікно виводу дало мені деяке уявлення про цю проблему, яку я також мав
hanzolo

Відповіді:


241

Ви намагалися надати повний шлях команди, яка виконується в команді події до або після збирання?

Я отримував помилку 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\

Зауважте, що цей приклад щодо пробілів не перевіряється.


44
Я також отримав помилку 9009 у подіях після і попереднього збирання. Перевірка вкладки Вихід у Visual Studio показує проблему. У моєму випадку я намагався пройти шлях, що містить пробіл
Філ Хейл

16
У мене була схожа проблема з цією, але вона була результатом пробілів у назвах папок. Поставивши шляхи в лапки ( "$(SolutionDir)packages\NUnit.2.5.10.11092\tools\"nunit-console "$(TargetPath)"), це вирішило.
Джастін Морган

1
Я зіткнувся з подібною проблемою з подією перед збіркою, яка використовувала аплет Java для попередньої компіляції JS та CSS ... виявляється, ми знехтували ставити Java Runtime на сервер.
салюс

2
Чи можливо, що PATHзмінна середовища якось загубиться? Я отримую цю помилку раз у раз. У мене npm installналаштування як подія перед збіркою, і спочатку вона працює (тому я припускаю, що все налаштовано), але потім випадковим чином вона перестане працювати протягом дня (як правило, при переключенні між рішеннями / гілками, я вважаю), і більше не буде знати про npm. Перезапуск VS "виправляє" це ... значить, моє PATHналаштування правильно, але, схоже, встає VS. Якби був спосіб перегляду змінних env зсередини VS, я міг би це підтвердити.
jamiebarrow

2
Якщо ви хочете захистити свою збірку від збоїв у різних середовищах, скажімо, Windows, встановлені на D: \, використовуйте параметри середовища в поєднанні з відповіддю @thehhv:%systemroot%\System32\xcopy ...
Dorival

110

Код помилки 9009 означає, що файл помилки не знайдено. Усі основні причини, розміщені у відповідях тут, є гарним натхненням з’ясувати, чому, але сама помилка просто означає поганий шлях.


1
Моя проблема з файлом не знайдена: посилання у файлі csproj було $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ tsc і повинно бути $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ 1.0 \ tsc
RHAD

Дякуємо, що реально відповіли на перше запитання.
AntonK

А це означає, що не знайти жодного файлу, до якого може бути залучена спроба, тому навіть коли вона не змогла знайти саму команду. Я використовував delete замість del. Це також дасть вам 9009.
Мірча Іон

84

Це трапляється, коли вам не вистачає деяких параметрів середовища для використання інструментів Microsoft Visual Studio x86.
Тому спробуйте додати як першу команду в кроках після збирання:

Для Visual Studio 2010 використовуйте:

call "$(DevEnvDir)..\Tools\vsvars32.bat"

Як згадував @FlorianKoch у коментарях, для VS 2017 використовуйте:

call "$(DevEnvDir)..\Tools\VsDevCmd.bat"

Він повинен бути розміщений перед будь-якою іншою командою.
Тут буде створено середовище для використання інструментів Microsoft Visual Studio x86.


3
Не могли б ви допомогти мені - де і в який файл я повинен додати рядок call "$(DevEnvDir)..\Tools\vsvars32.bat"? Спасибі
прибій

2
Мені довелося додати запис до моєї Pathзмінної середовища. Перевірте вікно виводу для отримання додаткової інформації.
paqogomez

Обережність. Це не вдасться на багатьох серверах побудови: blogs.clariusconsulting.net/kzu/devenvdir-considered-harmful
Джордж Мауер

2
Дякую, що за розрядний інструмент x64 я вирішив так: "$ (DevEnvDir) .. \ VC \ vcvarsall.bat"
codekiddy

1
Для VS 2017 файл"$(DevEnvDir)..\Tools\VsDevCmd.bat"
Флоріан Кох

57

Швидше за все, у вас є простір у результаті, який ви отримаєте.

Ви можете обійти це, цитуючи шляхи, таким чином дозволяючи пробіли. Наприклад:

xcopy "$(SolutionDir)\Folder Name\File To Copy.ext" "$(TargetDir)" /R /Y /I

9
+1 - Це саме та проблема, яку я мав. Команда в моєму post-build працювала, коли я будував проект локально, але не вдався, коли він був побудований на сервері збірки. Я просто розмістив команду між подвійними лапками, щоб виправити її. Дякую.
sheikhjabootie

Тож чи розумно міркувати, що помилка 9009 - це "файл не знайдено" ..? Особисто я думаю, що питання "що таке помилка MSBuild 9009?" має бути ідеально відмінним як окреме питання, але направлене на Microsoft!
Даг

11

Була така ж змінна після зміни змінної PATH з Environmental Variables у Win 7. Повернення до стандартних допомогло.


10

У мене виникла помилка 9009, коли мій сценарій події після складання намагався запустити пакетний файл, який не існував у вказаному шляху.


6

Я спричинив цю помилку під час редагування змінної середовища Path. Після редагування я випадково додавPath= на початок рядка шляху. З такою неправильною змінною контуру я не зміг запустити XCopy в командному рядку (жодної команди чи файлу не знайдено), і Visual Studio відмовився запускати крок після складання, посилаючись на помилку з кодом 9009.

XCopy зазвичай проживає в C: \ Windows \ System32. Після того, як змінна середовища Path дозволила XCopy вирішитись у запиті DOS, Visual Studio добре розробив моє рішення.


6

Моя точна помилка була

The command "iscc /DConfigurationName=Debug "C:\Projects\Blahblahblah\setup.iss"" exited with code 9009.

9009 означає, що файл не знайдено, але він фактично не міг знайти частину команди "iscc".

Я виправив це, додавши ";C:\Program Files\Inno Setup 5 (x86)\"до змінної системного середовища"path"


5

Якщо сценарій насправді робить те, що йому потрібно зробити, і це просто Visual Studio клопоче про помилку, яку ви можете просто додати:

exit 0

до кінця вашого сценарію.


5
приховувати будь-яку потенційну помилку не слід шляхом
igelineau

1
Я згоден, це не слід маскувати
AltF4_

5

Перевірте правопис. Я намагався викликати виконуваний файл, але ім'я було написано неправильно, і це дало мені exited with code 9009повідомлення.


1
До цього додайте перевірку на наявність виконуваного файлу у вашій системі взагалі.
Джошуа Дрейк

5

У моєму випадку я повинен був "CD" (Change Directory) у відповідний каталог, перш ніж викликати команду, оскільки виконуваний файл, який я дзвонив, знаходився в моєму каталозі проектів.

Приклад:

cd "$(SolutionDir)"
call "$(SolutionDir)build.bat"

1
Це вирішило проблему для мене під керуванням devenv.exe Visual Studio, але вам не потрібно вказувати папку вдруге, зробить just'call build.bat
FrinkTheBrave

4

Ще один варіант:

сьогодні я закликаю інтерпретатора python з cron у win32 і беру ExitCode (% ERRORLEVEL%) 9009, оскільки системний рахунок, який використовується cron, не має шляху до каталогу Python.


4

Проблема в моєму випадку виникла, коли я намагався використати команду в командному рядку для події Post-build в моїй бібліотеці тестових класів. Коли ви використовуєте лапки так:

"$(SolutionDir)\packages\NUnit.Runners.2.6.2\tools\nunit" "$(TargetPath)" 

або якщо ви використовуєте консоль:

"$(SolutionDir)\packages\NUnit.Runners.2.6.2\tools\nunit-console" "$(TargetPath)"

Це вирішило для мене проблему.


4

Відповідь 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, перевірте вікно виводу та перевірте, чи проблема невстановлена ​​змінна середовище.


3

Також переконайтесь, що у вікні редагування подій після створення подій у вашому проекті немає розривів рядків. Іноді копіювання команди xcopy з Інтернету, коли вона є багаторядковою та вставлення її у VS, спричинить проблему.


Незважаючи на те, що jesse робить хорошу думку про відсутність розривів рядків посеред команди xcopy, зауважте, що в загальному випадку в цьому полі справедливі перерви рядків; кожен рядок слід інтерпретувати як власну команду.
RJFalconer

3

Я додав "> myFile.txt" до кінця рядка на етапі попереднього збирання, а потім перевірив файл на предмет фактичної помилки.


2

Для мене місце на диску мало, і файли, які не вдалося записати, очікувались, що вони будуть представлені пізніше. Інші відповіді згадували про відсутні файли (або неправильно названі / неправильно посилаються на ім’я файли) - але першопричиною була відсутність місця на диску.


2

Для мене це сталося після оновлення пакетів нута з однієї версії PostSharp до наступної у великому рішенні (~ 80 проект). У мене є помилки компілятора для проектів, які мають команди в подіях PreBuild.

'cmd' не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма чи пакетний файл. C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1249,5): error MSB3073: Команда "cmd / c C: \ GitRepos \ main \ ServiceInterfaces \ DEV.Config \ PreBuild.cmd ServiceInterfaces », що вийшов із кодом 9009.

Змінна PATH була пошкоджена, стаючи занадто довгою, через кілька повторних шляхів, пов'язаних з PostSharp.Patterns.Diagnostics. Коли я закрив Visual Studio і відкрив його знову, проблема була виправлена.


2

Ще один варіант файлу не знайдено через пробіли в шляху. У моєму випадку в сценарії msbuild. Мені потрібно було використовувати стиль HTML & quot; рядки в команді exec.

<!-- Needs quotes example with my Buildscript.msbuild file --> 
<Exec Command="&quot;$(MSBuildThisFileDirectory)\wix\wixscript.bat&quot; $(VersionNumber) $(VersionNumberShort)" 
    ContinueOnError="false" 
    IgnoreExitCode="false" 
    WorkingDirectory="$(MSBuildProjectDirectory)\wix" />

2

Так само, як і інші відповіді, в моєму випадку це було через відсутній файл. Щоб знати, що є файлом, який не вистачає, ви можете перейти до вихідного вікна, і воно відразу покаже вам, що пропало.

Щоб відкрити вікно виводу у Visual Studio:

  1. Ctrl + Alt + O
  2. Перегляд> Вихідні дані

введіть тут опис зображення


2

Я вирішив це, просто перезапустивши Visual Studio - я просто запустився dotnet tool install xxxу вікні консолі, і VS ще не підібрав нові змінні середовища та / або налаштування шляху, які були змінені, тому швидкий перезапуск усунув проблему.


1

Це досить елементарно, у мене була ця проблема, і бентежить простий провал.

Використання програми аргументи командного рядка, я видалив їх, а потім додав їх назад. Раптом проект не вдалося розробити.

Visual Studio -> Властивості проекту -> переконайтеся, що ви використовуєте вкладку "Налагодження" (а не вкладку "Події побудови") -> Аргументи командного рядка

Я використав текстову область "Пост / попереднє складання", що було неправильним у цьому випадку.


1

Моє рішення було просто: як ви намагалися вимкнути його і знову ввімкнути? Тому я перезапустив комп’ютер, і проблеми не було.


1

Я також зіткнувся з цією 9009проблемою, коли зіткнувся з перезаписаною ситуацією.

В основному, якщо файл вже існує і ви не вказали /yперемикач (який автоматично перезаписується), ця помилка може статися під час запуску зі збірки.


0

Насправді я помітив, що з певних причин змінну середовища% windir% іноді стирають. Що працювало для мене, було встановити змінну середовища windir на c: \ windows, перезапустити VS, і все. Таким чином ви не можете змінювати файли рішення.


0

Принаймні, у Visual Studio Ultimate 2013, версія 12.0.30723.00, оновлення 3, розділити оператор if / else з розривом рядка неможливо:

працює:

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) else (echo server)

не працює:

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) 
else (echo server)

0

Ще одна причина: Якщо ваша подія перед збіркою посилається на інший шлях бін проектів, і ви бачите цю помилку під час запуску msbuild, але не Visual Studio, вам доведеться вручну упорядкувати проекти у файлі * .sln (з текстовим редактором) так що проект, на який ви орієнтуєтесь у події, будується перед проектом події. Іншими словами, msbuild використовує порядок того, що проекти перелічені у файлі * .sln, тоді як VS використовує знання про залежність проекту. У мене це сталося, коли після wixproj був перерахований інструмент, який створює базу даних для включення до wixproj.


0

Я думаю, що в моєму випадку на шляху були російські символи (усі проекти були в папці користувача). Коли я помістив рішення в іншу папку (безпосередньо на диску), все стало нормально.


0

Моє рішення полягало в тому, щоб створити копію файлу і додати крок до завдання збірки, щоб скопіювати мій файл над оригіналом.


0

Вам потрібно переконатися, що ви встановили грунт в усьому світі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.