Apa yang dimaksud "keluar dengan kode 9009" selama pembuatan ini?

292

apa maksud pesan error ini? Apa yang bisa saya lakukan untuk memperbaiki masalah ini?

AssemblyInfo.cs keluar dengan kode 9009


Masalahnya mungkin terjadi sebagai bagian dari langkah post-build dalam solusi .NET di Visual Studio.

Anthony Mastrean
sumber
7
OP tidak akan kembali untuk memperbaiki masalah ini, tetapi ia memiliki banyak jawaban dan banyak jus Google. Jadi, mari kita coba simpulkan masalahnya?
Anthony Mastrean
13
Jendela Keluaran memberi saya beberapa wawasan tentang masalah ini yang juga saya alami
hanzolo

Jawaban:

241

Apakah Anda mencoba memberikan path lengkap dari perintah yang berjalan di perintah event pre atau post-build?

Saya mendapatkan kesalahan 9009 karena xcopyperintah event post-build di Visual Studio 2008.

Perintah "xcopy.exe /Y C:\projectpath\project.config C:\compilepath\"keluar dengan kode 9009.

Tetapi dalam kasus saya itu juga intermiten. Yaitu, pesan kesalahan tetap sampai restart komputer, dan menghilang setelah restart komputer. Itu kembali setelah beberapa masalah terkait jarak jauh yang belum saya temukan.

Namun, dalam kasus saya, memberikan perintah dengan path lengkap menyelesaikan masalah:

c:\windows\system32\xcopy.exe /Y C:\projectpath\project.config C:\compilepath\ 

Alih-alih hanya:

xcopy.exe /Y C:\projectpath\project.config C:\compilepath\

Jika saya tidak memiliki path lengkap, itu akan berjalan beberapa saat setelah restart, dan kemudian berhenti.

Juga seperti yang disebutkan pada komentar untuk posting ini, jika ada spasi di jalur penuh, maka orang perlu tanda kutip di sekitar perintah . Misalnya

"C:\The folder with spaces\ABCDEF\xcopy.exe" /Y C:\projectpath\project.config C:\compilepath\

Perhatikan bahwa contoh ini berkaitan dengan spasi tidak diuji.

thehhv
sumber
44
Saya juga menerima 9009 kesalahan pada posting dan acara pra-bangun. Memeriksa tab Output di Visual Studio menunjukkan masalah. Dalam kasus saya, saya mencoba mengakses jalur yang berisi spasi
Phil Hale
16
Saya punya masalah yang mirip dengan ini, tetapi itu adalah hasil dari spasi di nama folder. Menempatkan path dalam tanda kutip ( "$(SolutionDir)packages\NUnit.2.5.10.11092\tools\"nunit-console "$(TargetPath)") menyelesaikannya.
Justin Morgan
1
Saya mengalami masalah serupa dengan acara pra-bangun yang menggunakan applet Java untuk pra-kompilasi JS dan CSS ... ternyata kami lalai menempatkan Java Runtime di server.
bernilai
2
Apakah mungkin PATHvariabel lingkungan hilang entah bagaimana? Saya mendapatkan kesalahan ini setiap sekarang dan kemudian. Saya memiliki npm installpengaturan sebagai acara pra-bangun, dan awalnya bekerja (jadi saya menganggap semuanya sudah diatur), tetapi kemudian secara acak itu akan berhenti bekerja pada siang hari (umumnya ketika beralih di antara solusi / cabang saya percaya), dan itu tidak akan lagi tahu tentang npm. Restart VS 'fix' it ... artinya PATHsetup saya benar, tetapi sepertinya bangun oleh VS. Jika ada cara untuk melihat variabel env dari dalam VS saya bisa mengkonfirmasi ini.
jamiebarrow
2
Jika Anda ingin melindungi bangunan Anda dari kerusakan di lingkungan yang berbeda, katakanlah, jendela yang diinstal pada D: \, gunakan vars lingkungan bersama dengan jawaban @thehhv:%systemroot%\System32\xcopy ...
Dorival
110

Kode Kesalahan 9009 berarti file kesalahan tidak ditemukan. Semua alasan mendasar yang diposting dalam jawaban di sini adalah inspirasi yang baik untuk mencari tahu mengapa, tetapi kesalahan itu sendiri berarti jalan yang buruk.

Chris Moschini
sumber
1
Masalah saya dengan file yang tidak ditemukan adalah referensi dalam file csproj adalah $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ tsc dan harus $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ 1.0 \ tsc
RHAD
Terima kasih telah menjawab pertanyaan pertama.
AntonK
Dan itu berarti tidak menemukan file apa pun yang mungkin melibatkan perintah yang dicoba, bahkan ketika itu tidak dapat menemukan perintah itu sendiri. Saya menggunakan delete sebagai ganti del. Itu akan memberi Anda 9009 juga.
Mircea Ion
84

Ini terjadi ketika Anda kehilangan beberapa pengaturan lingkungan untuk menggunakan alat Microsoft Visual Studio x86.
Karenanya, coba tambahkan sebagai perintah pertama dalam langkah-langkah post-build Anda:

Untuk Visual Studio 2010 gunakan:

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

Seperti @FlorianKoch disebutkan dalam komentar, untuk penggunaan VS 2017:

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

Itu harus ditempatkan sebelum perintah lain.
Ini akan mengatur lingkungan untuk menggunakan alat Microsoft Visual Studio x86.

HRKoder
sumber
3
Bisakah Anda membantu saya - di mana dan ke file mana saya harus menambahkan baris call "$(DevEnvDir)..\Tools\vsvars32.bat"? Terima kasih
surfmuggle
2
Saya harus menambahkan entri ke Pathvariabel lingkungan saya . Periksa jendela Output untuk informasi lebih lanjut.
paqogomez
Peringatan. Ini akan gagal pada banyak server build: blogs.clariusconsulting.net/kzu/devenvdir-considered-harmful
George Mauer
2
Terima kasih, untuk toolchain x64 bit yang saya selesaikan seperti: "$ (DevEnvDir) .. \ VC \ vcvarsall.bat"
codekiddy
1
Untuk VS 2017 file-nya adalah"$(DevEnvDir)..\Tools\VsDevCmd.bat"
Florian Koch
57

Kemungkinan besar Anda memiliki ruang di jalur yang dihasilkan.

Anda dapat mengatasi ini dengan mengutip jalur, sehingga memungkinkan spasi. Sebagai contoh:

xcopy "$(SolutionDir)\Folder Name\File To Copy.ext" "$(TargetDir)" /R /Y /I
NileshChauhan
sumber
9
+1 - Ini persis masalah yang saya alami. Perintah di post-build saya berfungsi ketika saya membangun proyek secara lokal, tetapi gagal ketika dibangun di build server. Saya baru saja menempatkan perintah di antara tanda kutip ganda untuk memperbaikinya. Terima kasih.
sheikhjabootie
Jadi masuk akal untuk berspekulasi bahwa kesalahan 9009 adalah "file tidak ditemukan" ..? Secara pribadi, saya pikir pertanyaan "apa kesalahan MSBuild 9009?" semestinya baik-baik saja sebagai pertanyaan yang berdiri sendiri, tetapi diarahkan ke Microsoft!
The Dag
11

Punya variabel yang sama setelah mengubah variabel PATH dari Variabel Lingkungan di Win 7. Mengubah kembali ke default membantu.

Radomir Szewczyk
sumber
10

Saya memiliki kesalahan 9009 ketika skrip peristiwa pembuatan pos saya mencoba menjalankan file batch yang tidak ada di jalur yang ditentukan.

SleepyBoBos
sumber
6

Saya menyebabkan kesalahan ini terjadi ketika saya redacted variabel lingkungan Path saya. Setelah mengedit, saya tidak sengaja menambahkanPath= ke awal string path. Dengan variabel path yang salah bentuk, saya tidak dapat menjalankan XCopy pada baris perintah (tidak ada perintah atau file tidak ditemukan), dan Visual Studio menolak untuk menjalankan langkah post-build, mengutip kesalahan dengan kode 9009.

XCopy umumnya berada di C: \ Windows \ System32. Setelah variabel lingkungan Path memungkinkan XCopy untuk diselesaikan pada DOS prompt, Visual Studio membangun solusi saya dengan baik.

GregC
sumber
6

Kesalahan saya sebenarnya adalah

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

9009 berarti file tidak ditemukan, tetapi sebenarnya tidak dapat menemukan bagian "iscc" dari perintah.

Saya memperbaikinya dengan menambahkan ";C:\Program Files\Inno Setup 5 (x86)\"ke variabel lingkungan sistem"path"

scw
sumber
5

Jika skrip benar-benar melakukan apa yang perlu dilakukan dan itu hanya Visual Studio yang mengganggu Anda tentang kesalahan yang bisa Anda tambahkan:

exit 0

sampai akhir skrip Anda.

hakksor
sumber
5
menyembunyikan potensi kesalahan seharusnya tidak menjadi cara untuk pergi
igelineau
1
Saya setuju ini tidak boleh ditutup
AltF4_
5

Periksa ejaannya. Saya mencoba untuk memanggil executable tetapi namanya salah eja dan itu memberi saya exited with code 9009pesan.

Menandai
sumber
1
Untuk itu tambahkan centang untuk keberadaan executable pada sistem Anda sama sekali.
Joshua Drake
5

Dalam kasus saya, saya harus "CD" (Change Directory) ke direktori yang tepat terlebih dahulu, sebelum memanggil perintah, karena executable yang saya panggil ada di direktori proyek saya.

Contoh:

cd "$(SolutionDir)"
call "$(SolutionDir)build.bat"
Mathias Lykkegaard Lorenzen
sumber
1
Ini memperbaiki masalah bagi saya yang menjalankan Visual Studio's devenv.exe, tetapi Anda tidak perlu menentukan folder untuk yang kedua kalinya, just'call build.bat akan melakukan
FrinkTheBrave
4

Varian lain:

hari ini saya memanggil juru bahasa python dari cron di win32 dan mengambil ExitCode (% ERRORLEVEL%) 9009, karena akun sistem yang digunakan oleh cron tidak memiliki jalur ke direktori Python.

Denis Barmenkov
sumber
4

Masalah dalam kasus saya terjadi ketika saya mencoba menggunakan perintah pada baris perintah untuk acara Post-build di Perpustakaan Kelas Tes saya. Ketika Anda menggunakan tanda kutip seperti itu:

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

atau jika Anda menggunakan konsol:

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

Ini memperbaiki masalah bagi saya.

pdvries
sumber
4

Jawaban tfa telah diturunkan, tetapi sebenarnya dapat menyebabkan masalah ini. Berkat hanzolo, saya melihat ke jendela output dan menemukan yang berikut:

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.

Setelah berjalan npm install -g gulp, saya berhenti mendapatkan kesalahan ini. Jika Anda mendapatkan kesalahan ini di Visual Studio, periksa jendela output dan lihat apakah masalahnya adalah variabel lingkungan yang tidak disetel.

R. Salisbury
sumber
3

Juga, pastikan tidak ada jeda baris di jendela pengeditan acara pembuatan pos di proyek Anda. Terkadang menyalin perintah xcopy dari web ketika multi-line dan menempelkannya ke VS akan menyebabkan masalah.

jesse p
sumber
Meskipun jesse membuat poin bagus tentang tidak memiliki jeda baris di tengah-tengah perintah xcopy, perhatikan bahwa dalam kasus umum itu sah untuk memiliki jeda baris di bidang ini; setiap baris harus ditafsirkan sebagai perintahnya sendiri.
RJFalconer
3

Saya menambahkan "> myFile.txt" ke akhir baris pada langkah pra-membangun dan kemudian memeriksa file untuk kesalahan yang sebenarnya.

Philip
sumber
2

Bagi saya, ruang disk rendah, dan file yang tidak dapat ditulis diharapkan akan hadir nanti. Jawaban lain menyebutkan file yang hilang (atau file dengan nama yang dirujuk salah / dirujuk dengan nama) - tetapi penyebab utama adalah kurangnya ruang disk.

ErikE
sumber
2

Bagi saya itu terjadi setelah memutakhirkan paket nuget dari satu versi PostSharp ke yang berikutnya dalam solusi besar (~ 80 proyek). Saya punya kesalahan kompilator untuk proyek yang memiliki perintah di acara PreBuild.

'cmd' tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan, atau file batch. C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1249,5): error MSB3073: Perintah "cmd / c C: \ GitRepos \ main \ ServiceInterfaces \ DEV.Config \ PreBuild.cmd ServiceInterfaces "keluar dengan kode 9009.

Variabel PATH rusak menjadi terlalu panjang dengan beberapa jalur berulang yang terkait dengan PostSharp.Patterns.Diagnostics. Ketika saya menutup Visual Studio dan membukanya lagi, masalahnya diperbaiki.

Michael Freidgeim
sumber
2

Namun varian file lain tidak ditemukan, karena spasi di jalan. Dalam kasus saya dalam skrip msbuild. Saya perlu menggunakan gaya HTML & quot; string dalam perintah 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" />
Ben Butzer
sumber
2

Sama seperti jawaban lainnya, dalam kasus saya itu karena file yang hilang. Untuk mengetahui apa file yang hilang, Anda dapat pergi ke jendela output dan itu akan menunjukkan kepada Anda langsung apa yang hilang.

Untuk membuka jendela output di Visual Studio:

  1. Ctrl + Alt + O
  2. Lihat> Keluaran

masukkan deskripsi gambar di sini

Marvin Glenn Lacuna
sumber
2

Saya memperbaikinya dengan hanya me-restart Visual Studio - Saya baru saja menjalankan dotnet tool install xxxdi jendela konsol dan VS belum mengambil variabel lingkungan baru dan / atau pengaturan jalur yang diubah, jadi restart cepat memperbaiki masalah ini.

keithl8041
sumber
1

Ini cukup mendasar, saya punya masalah ini, dan gagal sederhana memalukan.

Aplikasi menggunakan argumen baris perintah, saya menghapusnya dan kemudian menambahkannya kembali. Tiba-tiba proyek gagal dibangun.

Visual Studio -> Properti Proyek -> verifikasi bahwa Anda menggunakan tab 'Debug' (bukan tab 'Bangun Acara') -> Argumen Baris Perintah

Saya menggunakan area teks Post dan Pre-build, yang salah dalam kasus ini.

Niike2
sumber
1

Solusi saya sangat sederhana: apakah Anda sudah mencoba mematikannya lagi? Jadi saya me-restart komputer dan masalah itu hilang.

krzyszt0fd
sumber
1

Saya juga mengalami ini 9009 masalah ketika menghadapi situasi menimpa.

Pada dasarnya, jika file sudah ada dan Anda belum menentukan /ysakelar (yang secara otomatis menimpa) kesalahan ini dapat terjadi ketika dijalankan dari build.

Travis Vroman
sumber
0

Sebenarnya saya perhatikan bahwa karena alasan tertentu variabel% windir% terkadang terhapus. Apa yang berhasil untuk saya adalah mengatur ulang variabel lingkungan windir ke c: \ windows, restart VS, dan hanya itu. Dengan begitu Anda mencegah harus memodifikasi file solusi.

Charles F
sumber
0

Setidaknya dalam Visual Studio Ultimate 2013, Versi 12.0.30723.00 Pembaruan 3, tidak mungkin untuk memisahkan pernyataan if / else dengan jeda baris:

bekerja:

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

tidak bekerja:

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) 
else (echo server)
it-freelancer-magazin.de
sumber
0

Namun alasan lain: Jika acara pra-bangun Anda merujuk path bin proyek lain dan Anda melihat kesalahan ini ketika menjalankan msbuild, tetapi bukan Visual Studio, maka Anda harus mengatur proyek secara manual dalam file * .sln (dengan editor teks) jadi bahwa proyek yang Anda targetkan dalam acara tersebut dibangun sebelum proyek acara. Dengan kata lain, msbuild menggunakan urutan proyek terdaftar dalam file * .sln sedangkan VS menggunakan pengetahuan tentang dependensi proyek. Saya memiliki ini terjadi ketika alat yang membuat database untuk dimasukkan dalam wixproj terdaftar setelah wixproj.

Novaterata
sumber
0

Saya pikir dalam kasus saya ada simbol Rusia di jalur (semua proyek berada di folder pengguna). Ketika saya meletakkan solusi di folder lain (langsung pada disk), semuanya menjadi ok.

Dmitriy Dokshin
sumber
0

Solusi saya adalah membuat salinan file dan menambahkan langkah ke tugas build untuk menyalin file saya di atas yang asli.

johnrizzo1
sumber
0

Anda harus memastikan bahwa Anda telah menginstal grunt secara global

tfa
sumber