Bu derleme sırasında “kod 9009'dan çıkıldı” ne anlama geliyor?


292

Bu hata mesajı ne anlama geliyor? Bu sorunu gidermek için ne yapabilirim?

AssemblyInfo.cs kodu 9009 ile çıkıldı


Sorun muhtemelen Visual Studio'da bir .NET çözümü oluşturma sonrası adımın bir parçası olarak oluyor.


7
OP bu sorunu düzeltmek için geri gelmiyor, ancak çok fazla cevabı ve çok sayıda Google suyu var. Peki, sorunu çıkarmaya çalışalım mı?
Anthony Mastrean

13
Çıktı Penceresi bana da sahip olduğum bu sorun hakkında bir fikir verdi
hanzolo

Yanıtlar:


241

Yapım öncesi veya sonrası olay komutunda çalışan komutun tam yolunu vermeye çalıştınız mı?

xcopyVisual Studio 2008'de bir derleme sonrası olay komutu nedeniyle 9009 hatası alıyordum .

Komut "xcopy.exe /Y C:\projectpath\project.config C:\compilepath\"9009 koduyla çıkıldı.

Ama benim durumumda da aralıklıydı. Yani, hata iletisi bilgisayarın yeniden başlatılmasına kadar devam eder ve bilgisayarın yeniden başlatılmasından sonra kaybolur. Ben henüz keşfetmek için bazı uzaktan ilgili sorundan sonra geri döndü.

Ancak, benim durumumda komutu tam yolu ile sağlamak sorunu çözdü:

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

Sadece yerine:

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

Tam yol yoksa, yeniden başlatmadan sonra bir süre çalışır ve sonra durur.

Ayrıca bu yazının yorumlarında belirtildiği gibi , tam yolda boşluklar varsa , komutun etrafında tırnak işaretlerine ihtiyaç vardır . Örneğin

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

Boşluklarla ilgili bu örneğin test edilmediğini unutmayın.


44
Ayrıca post ve pre-build olaylarda 9009 hatası aldım. Visual Studio'da Çıktı sekmesini kontrol etmek sorunu gösterir. Benim durumumda boşluk içeren bir yola erişmeye çalışıyordum
Phil Hale

16
Buna benzer bir sorunum vardı, ancak klasör adlarındaki boşlukların sonucuydu. Yolları tırnak ( "$(SolutionDir)packages\NUnit.2.5.10.11092\tools\"nunit-console "$(TargetPath)") içine koymak sorunu çözdü.
Justin Morgan

1
JS ve CSS'yi derlemek için bir Java uygulaması kullanan bir pre-build olayıyla benzer bir sorunla karşılaştım ... Java Runtime'ı sunucuya koymayı ihmal ettiğimiz ortaya çıkıyor.
saluce

2
PATHOrtam değişkeninin bir şekilde kaybolması mümkün müdür ? Ara sıra bu hatayı alıyorum. npm installÖnceden oluşturulmuş bir olay olarak kurulum yaptım ve başlangıçta işe yarıyor (bu yüzden her şeyin kurulum olduğunu varsayıyorum), ancak daha sonra rastgele gün boyunca çalışmayı durduracak (genellikle inandığım çözümler / dallar arasında geçiş yaparken) ve artık olmayacak hakkında bilmek npm. VS 'düzeltmeleri' yeniden PATHbaşlatılır ... yani benim doğru kurulum, ama VS tarafından kalkmak gibi görünüyor. Env değişkenlerini VS içinden görüntülemenin bir yolu olsaydı bunu doğrulayabilirim.
jamiebarrow

2
Farklı ortamlarda çökmesini yapı korumak istiyorsanız, pencereleri D yüklü, diyelim: \, kullanım ortamı @thehhv cevabın birlikte vars:%systemroot%\System32\xcopy ...
Dorival

110

Hata Kodu 9009, hata dosyasının bulunamadığı anlamına gelir. Buradaki yanıtlarda yayınlanan tüm temel nedenler, nedenini bulmak için iyi bir ilham kaynağıdır, ancak hatanın kendisi sadece kötü bir yol anlamına gelir.


1
Dosya bulunamadı sorunum csproj dosyasındaki başvuru $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ tsc ve $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ 1.0 \ tsc
RHAD

İlk soruyu cevapladığınız için teşekkürler.
AntonK

Ve bu, teşebbüs edilen komutun içerebileceği herhangi bir dosyayı bulamaması, dolayısıyla komutun kendisini bulamadığı durumlarda bile. Del yerine delete kullanıyordum. Bu size 9009 da verir.
Mircea Ion

84

Microsoft Visual Studio x86 araçlarını kullanmak için bazı ortam ayarları eksik olduğunda olur.
Bu nedenle, derleme sonrası adımlarınızda ilk komut olarak eklemeyi deneyin:

Visual Studio 2010 kullanımı için:

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

@FlorianKoch'un yorumlarda belirtildiği gibi, VS 2017 kullanımı için:

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

Diğer komutlardan önce yerleştirilmelidir.
Microsoft Visual Studio x86 araçlarını kullanmak için ortam ayarlayacaktır.


3
Bana yardım edebilir misiniz - satırı nereye ve hangi dosyaya eklemem gerekir call "$(DevEnvDir)..\Tools\vsvars32.bat"? Teşekkürler
surfmuggle

2
PathOrtam değişkenime bir girdi eklemek zorunda kaldım . Daha fazla bilgi için Çıktı penceresine bakın.
paqogomez

Dikkat. Bu, birçok yapı sunucusunda başarısız olacaktır: blogs.clariusconsulting.net/kzu/devenvdir-considered-harmful
George Mauer

2
Teşekkür ederim, x64 bit toolchain için şu şekilde çözdüm: "$ (DevEnvDir) .. \ VC \ vcvarsall.bat"
codekiddy

1
VS 2017 için dosya"$(DevEnvDir)..\Tools\VsDevCmd.bat"
Florian Koch

57

Büyük olasılıkla ortaya çıkan yolunuzda yer var.

Yolları belirterek, böylece boşluklara izin vererek bu sorunu çözebilirsiniz. Örneğin:

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

9
+1 - Bu benim yaşadığım problem. Post-build'imdeki bir komut, projeyi yerel olarak oluşturduğumda çalıştı, ancak derleme sunucusunda oluşturulduğunda başarısız oldu. Düzeltmek için komutu çift tırnak arasına aldım. Teşekkürler.
sheikhjabootie

Peki 9009 hatasının "dosya bulunamadı" olduğunu düşünmek mantıklı mıdır? Şahsen, "MSBuild 9009 hatası nedir?" tek başına bir soru olarak mükemmel olmalı, ancak Microsoft'a yönlendirilmelidir!
The Dag

11

Win 7'de PATH değişkenini Çevresel Değişkenlerden değiştirdikten sonra aynı değişken vardı.


10

Post build olay betiğim belirtilen yolda mevcut olmayan bir toplu iş dosyasını çalıştırmaya çalışırken 9009 hatası aldım.


6

Path ortam değişkenimi düzelttiğimde bu hatanın oluşmasına neden oldum. Düzenledikten sonra, yanlışlıkla Path=yol dizesinin başına ekledim . Böyle hatalı biçimlendirilmiş bir yol değişkeni ile, XCopy komut satırında (komut veya dosya bulunamadı) çalıştıramadı ve Visual Studio, 9009 kodunda hata nedeniyle derleme sonrası adım çalıştırmayı reddetti.

XCopy genellikle C: \ Windows \ System32 dizininde bulunur. Path ortam değişkeni XCopy'nin DOS komut isteminde çözülmesine izin verdiğinde, Visual Studio çözümümü iyi oluşturdu.


6

Kesin hataydı

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

9009, dosyanın bulunamadığı anlamına gelir, ancak aslında komutun "iscc" bölümünü bulamadı.

";C:\Program Files\Inno Setup 5 (x86)\"Sistem ortam değişkenine ekleyerek düzelttim"path"


5

Betik aslında yapması gerekeni yapıyorsa ve sadece Visual Studio ekleyebileceğiniz hata hakkında sizi rahatsız ediyorsa:

exit 0

senaryonun sonuna.


5
herhangi bir potansiyel hatayı gizlemek için bir yol olmamalı
igelineau

1
Bunun maskelenmemesi gerektiğine katılıyorum
AltF4_

5

İmlayi kontrol et. Yürütülebilir bir dosyayı aramaya çalışıyordum ama adı yanlış yazılmıştı ve bana exited with code 9009mesaj verdi .


1
Buna, sisteminizdeki yürütülebilir dosyanın varlığını kontrol edin.
Joshua Drake

5

Benim durumumda, komut çağırmadan önce uygun dizine "CD" (Dizin Değiştir) gerekiyordu, çünkü aradığım yürütülebilir dosya benim proje dizininde idi.

Misal:

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

1
Bu, Visual Studio'nun devenv.exe dosyasını çalıştırmamdaki sorunu düzeltti, ancak klasörü ikinci kez belirtmenize gerek yok, just'call build.bat yapacağız
FrinkTheBrave

4

Başka bir varyant:

Bugün win32'de cron'dan python yorumlayıcısını çağırıyorum ve ExitCode (% ERRORLEVEL%) 9009'u alıyorum, çünkü cron tarafından kullanılan sistem hesabının Python dizinine yolu yok.


4

Benim durumumda sorun, sınama sınıfı kitaplığımda Post-build olayı için komut satırında bir komut kullanmaya çalıştığınızda oluştu. Aşağıdaki gibi tırnak işaretleri kullandığınızda:

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

veya konsolu kullanıyorsanız:

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

Bu benim için sorunu düzeltti.


4

tfa'nın cevabı reddedildi, ancak aslında bu soruna neden olabilir. Hanzolo sayesinde, çıkış penceresine baktım ve aşağıdakileri buldum:

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.

Çalıştırdıktan sonra npm install -g gulp, bu hatayı almaya durdu. Visual Studio'da bu hatayı alıyorsanız, çıkış penceresini kontrol edin ve sorunun ayarlanmamış bir ortam değişkeni olup olmadığına bakın.


3

Ayrıca, projenizde post-build olay düzenleme penceresinde satır kesmeleri olmadığından emin olun. Bazen xcopy komutunun çok satırlı olduğu zaman web'den kopyalanması ve VS'ye yapıştırılması bir soruna neden olabilir.


Her ne kadar jesse bir xcopy komutunun ortasında satır kesmeleri olmaması konusunda iyi bir noktaya işaret etse de, genel durumda bu alanda satır kesmelerinin geçerli olduğunu unutmayın; her satır kendi komutu olarak yorumlanmalıdır.
RJFalconer

3

Önceden derleme adımında satırın sonuna "> myFile.txt" ekledim ve sonra dosyayı gerçek hata açısından inceledim.


2

Benim için disk alanı azdı ve yazılamayan dosyaların daha sonra sunulması bekleniyordu. Diğer cevaplar eksik dosyalardan (veya yanlış adlandırılmış / ada göre yanlış adlandırılmış dosyalar) bahsetti - ancak temel neden disk alanı eksikliğiydi.


2

Benim için büyük bir çözümde (~ 80 proje) nuget paketlerini bir PostSharp versiyonundan diğerine yükselttikten sonra oldu. PreBuild olaylarında komutları olan projeler için derleyici hataları var.

'cmd' dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor. C: \ Program Dosyaları (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1249,5): hata MSB3073: "cmd / c C: \ GitRepos \ main \ ServiceInterfaces \ DEV.Config \ komutu PreBuild.cmd ServiceInterfaces "kodu 9009 ile çıktı.

PATH değişkeni, PostSharp.Patterns.Diagnostics ile ilişkili birden çok yinelenen yolla çok uzun hale geldi. Visual Studio'yu kapatıp yeniden açtığımda sorun giderildi.


2

Yoldaki boşluklar nedeniyle başka bir dosya türü bulunamadı. Benim durumumda msbuild betiğinde. HTML stilini kullanmam gerekiyordu & quot; exec komutu içinde dizeler.

<!-- 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

Diğer cevaplarla aynı, benim durumumda eksik dosya yüzünden oldu. Eksik dosyanın ne olduğunu bilmek için çıktı penceresine gidebilirsiniz ve eksik olanı hemen gösterecektir.

Çıktı penceresini Visual Studio'da açmak için:

  1. Ctrl + Alt + O
  2. Görünüm> Çıktı

resim açıklamasını buraya girin


2

Bunu sadece Visual Studio'yu yeniden başlatarak çözdüm - dotnet tool install xxxhenüz bir konsol penceresinde çalışmıştım ve VS henüz değiştirilen yeni ortam değişkenlerini ve / veya yol ayarlarını almamıştı, bu yüzden hızlı bir yeniden başlatma sorunu çözdü.


1

Bu oldukça basit, bu sorun vardı ve utanç verici basit başarısız.

Uygulama Komut satırı bağımsız değişkenlerini kullanın, onları kaldırdım ve sonra geri ekledim. Aniden proje inşa edilemedi.

Visual Studio -> Proje Özellikleri -> 'Hata Ayıkla' sekmesini ('Derleme Etkinlikleri' sekmesini değil) kullandığınızı doğrulayın -> Komut Satırı Bağımsız Değişkenleri

Bu durumda yanlış olan ve Post / Pre-build metin alanını kullandım.


1

Çözümüm şöyle basitti: Kapatıp tekrar açmayı denediniz mi? Böylece bilgisayarı yeniden başlattım ve sorun ortadan kalktı.


1

Üzerine 9009yazma durumu ile karşılaştığımda da bu problemle karşılaştım.

Temel olarak, dosya zaten varsa ve /yanahtarı (otomatik olarak üzerine yazan) belirtmediyseniz, bu hata bir derlemeden çalıştırıldığında ortaya çıkabilir.


0

Aslında bazı nedenlerden dolayı% windir% ortam değişkeninin bazen silindiğini fark ettim. Benim için işe yarayan windir ortam değişkenini c: \ windows olarak yeniden ayarlamak, VS'yi yeniden başlatmaktı ve hepsi bu. Bu şekilde çözüm dosyalarını değiştirmek zorunda kalmazsınız.


0

En azından Visual Studio Ultimate 2013, Sürüm 12.0.30723.00 Güncelleme 3'te, if / else deyimini satır sonu ile ayırmak mümkün değildir:

İşler:

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

çalışmıyor:

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

0

Yine başka bir neden: Pre-build etkinliğiniz başka bir proje bin yoluna başvuruyorsa ve msbuild'i çalıştırırken Visual Studio'yu çalıştırmıyorsanız bu hatayı görüyorsanız, * .sln dosyasındaki projeleri (bir metin düzenleyicisiyle) manuel olarak ayarlamanız gerekir. etkinlikte hedeflediğiniz projenin etkinliğin projesinden önce oluşturulduğunu unutmayın. Başka bir deyişle, msbuild projelerin * .sln dosyasında listelenme sırasını kullanırken VS proje bağımlılıkları hakkındaki bilgileri kullanır. Bir wixproj dahil edilmek üzere bir veritabanı oluşturan bir araç wixproj sonra listelendiğinde bu oldu.


0

Benim durumumda yolunda Rus sembolleri olduğunu düşünüyorum (tüm projeler kullanıcı klasöründeydi). Çözümü başka bir klasöre koyduğumda (doğrudan diskte), her şey yoluna girdi.


0

Benim çözümüm dosyanın bir kopyasını oluşturmak ve dosyayı orijinalin üzerine kopyalamak için oluşturma görevine bir adım eklemekti.


0

Global olarak homurdanma kurduğunuzdan emin olmanız gerekir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.