इस निर्माण के दौरान “कोड 9009 के साथ बाहर” का क्या अर्थ है?


292

इस त्रुटि का क्या संदेश है? मैं इस मुद्दे को सही करने के लिए क्या कर सकता था?

असेंबलीInfo.cs कोड 9009 के साथ बाहर निकल गया


समस्या संभवतः Visual Studio में .NET समाधान में पोस्ट-बिल्ड चरण के भाग के रूप में हो रही है।


7
ओपी इस समस्या को ठीक करने के लिए वापस नहीं आ रहा है, लेकिन इसके बहुत सारे उत्तर हैं और बहुत सारे Google रस हैं। तो, चलो समस्या का पता लगाने की कोशिश करते हैं?
एंथनी मस्तरीन

13
आउटपुट विंडो ने मुझे इस समस्या के बारे में कुछ जानकारी दी, जो मुझे भी लग रही थी
hzzolo

जवाबों:


241

क्या आपने पूर्व- या पोस्ट-बिल्ड ईवेंट कमांड में चल रहे कमांड का पूरा रास्ता देने की कोशिश की?

xcopyविजुअल स्टूडियो 2008 में पोस्ट-बिल्ड इवेंट कमांड के कारण मुझे 9009 त्रुटि मिल रही थी ।

आदेश "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
मुझे प्री-बिल्ड इवेंट के साथ एक समान समस्या का सामना करना पड़ा जिसने जेएस और सीएसएस को प्री-कंपाइल करने के लिए एक जावा एप्लेट का उपयोग किया था ... पता चलता है कि हमने जावा रनटाइम को सर्वर पर रखने के लिए उपेक्षित किया था।
saluce

2
क्या यह संभव है कि PATHपर्यावरण चर किसी तरह खो जाए? मुझे यह त्रुटि हर बार मिलती है। मेरे पास npm installएक पूर्व-निर्मित घटना के रूप में सेटअप है, और शुरू में यह काम करता है (इसलिए मुझे लगता है कि सब कुछ सेटअप है), लेकिन फिर बेतरतीब ढंग से यह दिन के दौरान काम करना बंद कर देगा (आमतौर पर जब मैं समाधान / शाखाओं के बीच स्विच करता हूं तो मुझे विश्वास है), और यह अब नहीं रहेगा के बारे में पता है npm। वीएस को art फ़िक्स ’करने से रोकना ... मतलब मेरा PATHसेटअप सही है, लेकिन लगता है कि वी.एस. अगर वीएस I के अंदर से एनवी चर को देखने का एक तरीका था, तो मैं इसकी पुष्टि कर सकता था।
जेमीबारो

2
यदि आप अपने निर्माण को अलग-अलग वातावरणों में दुर्घटनाग्रस्त होने से बचाना चाहते हैं, तो आइए बताते हैं: D: \ पर स्थापित खिड़कियां, @thehv उत्तर के संयोजन में पर्यावरण वर्जन का उपयोग करें:%systemroot%\System32\xcopy ...
Dorival

110

त्रुटि कोड 9009 का अर्थ है त्रुटि फ़ाइल नहीं मिली। यहां दिए गए जवाबों में पोस्ट किए गए सभी अंतर्निहित कारणों से यह पता लगाने की अच्छी प्रेरणा है कि क्यों, लेकिन त्रुटि स्वयं का मतलब केवल एक खराब रास्ता है।


1
फ़ाइल के साथ मेरा मुद्दा नहीं मिला था csproj फ़ाइल में संदर्भ $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ tsc था और $ 8 होना चाहिए था (PROGRAMFILES) \ Microsoft SDKs / टाइपस्क्रिप्ट \ 1.0 \
tsc

वास्तव में पहले प्रश्न का उत्तर देने के लिए धन्यवाद।
एंटोनोक

और इसका मतलब यह है कि किसी भी फाइल को खोजने का प्रयास नहीं किया जा सकता है, इस तरह से भी जब यह कमांड खुद नहीं खोज सकता है। मैं डेल के बजाय डिलीट का उपयोग कर रहा था। जो आपको 9009 भी देगा।
मेरिसा आयन

84

यह तब होता है जब आप Microsoft Visual Studio x86 टूल का उपयोग करने के लिए कुछ वातावरण सेटिंग्स को याद कर रहे हैं।
इसलिए, अपने पोस्ट-बिल्ड चरणों में पहले कमांड के रूप में जोड़ने का प्रयास करें:

दृश्य स्टूडियो 2010 उपयोग के लिए:

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

जैसा कि VSF 2017 के उपयोग के लिए @FlorianKoch ने टिप्पणियों में उल्लेख किया है:

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

इसे किसी अन्य आदेश से पहले रखा जाना चाहिए।
यह Microsoft Visual Studio x86 टूल का उपयोग करने के लिए वातावरण सेट करेगा।


3
क्या आप मेरी मदद कर सकते हैं - मुझे कहां और किस फाइल में लाइन जोड़ना है call "$(DevEnvDir)..\Tools\vsvars32.bat"? धन्यवाद
सर्फिंग

2
मुझे अपने Pathपर्यावरण चर में एक प्रविष्टि जोड़ना था । अधिक जानकारी के लिए आउटपुट विंडो की जाँच करें।
पक्ओगोमेज़

सावधान। यह कई बिल्ड सर्वरों पर विफल हो जाएगा: blogs.clariusconsulting.net/kzu/devenvdir-considered-harmful
जॉर्ज माउर

2
धन्यवाद, x64 बिट टूलचैन के लिए मैंने ऐसा हल किया: "$ (DevEnvDir) .. \ VC \ vcvarsall.bat"
कोडकिन्डी

1
वीएस 2017 के लिए फाइल है"$(DevEnvDir)..\Tools\VsDevCmd.bat"
फ्लोरियन कोच

57

सबसे अधिक शायद आपके परिणामी पथ में स्थान है।

आप रास्तों को उद्धृत करके इसके आसपास काम कर सकते हैं, इस प्रकार रिक्त स्थान की अनुमति दे सकते हैं। उदाहरण के लिए:

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

9
+1 - यह वही समस्या है जो मुझे हो रही थी। मेरे पोस्ट-बिल्ड में एक कमांड ने काम किया जब मैंने प्रोजेक्ट को स्थानीय रूप से बनाया था, लेकिन जब यह बिल्ड सर्वर पर बनाया गया था, तब विफल हो गया था। मैंने इसे ठीक करने के लिए बस दोहरे उद्धरण चिह्नों के बीच कमांड रखी। धन्यवाद।
शेखजाबूटी

तो क्या यह अनुमान लगाना उचित है कि 9009 त्रुटि "फ़ाइल नहीं मिली है" ..? व्यक्तिगत रूप से, मुझे लगता है कि सवाल "MSBuild त्रुटि 9009 क्या है?" स्टैंड-अलोन प्रश्न के रूप में पूरी तरह से ठीक होना चाहिए, लेकिन Microsoft को निर्देशित किया गया!
डेग

11

विन 7. चर में पर्यावरण चर से पथ परिवर्तन के बाद एक ही चर था। डिफ़ॉल्ट रूप से वापस बदलने में मदद मिली।


10

मुझे 9009 त्रुटि हुई है जब मेरी पोस्ट बिल्ड इवेंट स्क्रिप्ट एक बैच फ़ाइल चलाने की कोशिश कर रही थी जो निर्दिष्ट पथ में मौजूद नहीं थी।


6

जब मैंने अपने पथ वातावरण चर को कम किया तो मुझे यह त्रुटि हुई। संपादन के बाद, मैंने गलती Path=से पथ स्ट्रिंग की शुरुआत में जोड़ा । इस तरह के विकृत पथ चर के साथ, मैं कमांड लाइन पर XCopy (कोई आदेश या फ़ाइल नहीं मिली) चलाने में असमर्थ था, और Visual Studio ने कोड 9009 के साथ त्रुटि का हवाला देते हुए पोस्ट-बिल्ड चरण को चलाने से इनकार कर दिया।

XCopy आमतौर पर C: \ Windows \ System32 में रहता है। एक बार जब पथ वातावरण चर ने XCopy को DOS प्रॉम्प्ट पर हल करने की अनुमति दी, तो विज़ुअल स्टूडियो ने मेरे समाधान को अच्छी तरह से बनाया।


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

यदि स्क्रिप्ट वास्तव में वही करती है जो उसे करने की आवश्यकता है और यह सिर्फ विज़ुअल स्टूडियो आपको उस त्रुटि के बारे में बता रहा है जिसे आप अभी जोड़ सकते हैं:

exit 0

आप स्क्रिप्ट के अंत तक।


5
किसी भी संभावित त्रुटि को छिपाने का रास्ता नहीं होना चाहिए
igelineau

1
मैं मानता हूँ कि यह नकाबपोश नहीं होना चाहिए
AltF4_

5

अक्षर विन्यास की जाँच। मैं एक निष्पादन योग्य फोन करने की कोशिश कर रहा था, लेकिन नाम गलत था और इसने मुझे exited with code 9009संदेश दिया ।


1
उस पर अपने सिस्टम पर निष्पादन योग्य के अस्तित्व के लिए एक चेक जोड़ें।
यहोशू ड्रेक

5

मेरे मामले में, मुझे कमांड को कॉल करने से पहले, उचित सीडी को पहले "सीडी" (चेंज डायरेक्टरी) में लाना था, क्योंकि निष्पादन योग्य होने के बाद से मैं अपने प्रोजेक्ट डायरेक्टरी में था।

उदाहरण:

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

1
इसने मेरे लिए विजुअल स्टूडियो के डेवेनवे.नेट को चलाने के लिए समस्या को ठीक कर दिया, लेकिन आपको दूसरी बार फ़ोल्डर को निर्दिष्ट करने की आवश्यकता नहीं है, just'call build.bat करेगा
FrinkTheBrave

4

एक और प्रकार:

आज मैं win32 में क्रोन से अजगर इंटरप्रेटर को बुलाता हूं और एक्सिटकोड (% ERRORLEVEL%) 9009 लेता हूं, क्योंकि क्रॉन द्वारा उपयोग किए जाने वाले सिस्टम खाते में पायथन डायरेक्टरी का रास्ता नहीं है।


4

मेरे मामले में समस्या तब हुई जब मैंने अपने टेस्ट क्लास लाइब्रेरी में पोस्ट-बिल्ड इवेंट के लिए कमांड-लाइन पर एक कमांड का उपयोग करने की कोशिश की। जब आप उद्धरण चिह्नों का उपयोग करते हैं जैसे:

"$(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 कमांड को कॉपी करते समय जब यह मल्टी-लाइन होता है और इसे वीएस में चिपकाने से समस्या होती है।


हालांकि जेसी एक xcopy कमांड के बीच में लाइन ब्रेक नहीं होने के बारे में एक अच्छा बिंदु बनाता है, ध्यान दें कि सामान्य स्थिति में इस क्षेत्र में लाइन ब्रेक होना मान्य है; प्रत्येक पंक्ति की अपनी कमान के रूप में व्याख्या की जानी चाहिए।
RJFalconer

3

मैंने "> myFile.txt" को प्री-बिल्ड चरण में पंक्ति के अंत में जोड़ा और फिर वास्तविक त्रुटि के लिए फ़ाइल का निरीक्षण किया।


2

मेरे लिए, डिस्क स्थान कम था, और जो फाइलें नहीं लिखी जा सकती थीं, वे बाद में मौजूद होने की उम्मीद थी। अन्य उत्तर में अनुपलब्ध फ़ाइलें (या गलत / अनुचित रूप से संदर्भित-नाम फ़ाइलों) का उल्लेख किया गया है - लेकिन मूल कारण डिस्क स्थान की कमी थी।


2

मेरे लिए यह एक बड़े समाधान (~ 80 परियोजना) में एक PostSharp संस्करण से अगले एक के लिए nuget संकुल के उन्नयन के बाद हुआ। मुझे उन प्रोजेक्ट्स के लिए कंपाइलर एरर मिल गए हैं, जिनके पास PreBuild इवेंट्स में कमांड्स हैं।

'cmd' को आंतरिक या बाह्य कमांड, ऑपरेशनल प्रोग्राम या बैच फ़ाइल के रूप में मान्यता नहीं दी जाती है। C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1249,5): त्रुटि MSB3073: कमांड "cmd / c C: \ GRRepos \ main \ ServiceInterfaces \ DEV.Config \" PreBuild.cmd ServiceInterfaces "कोड 9009 के साथ बाहर निकल गया।

PATH वैरिएबल भ्रष्ट हो गया था PostSharp.Patterns.Diagnostics से संबंधित कई दोहराया मार्गों के साथ लंबे समय तक। जब मैंने विजुअल स्टूडियो को बंद किया और फिर से खोला, तो समस्या ठीक हो गई।


2

पथ में रिक्त स्थान के कारण, फ़ाइल का दूसरा संस्करण नहीं मिला। Msbuild स्क्रिप्ट में मेरे मामले में। मुझे HTML स्टाइल & quot; निष्पादन कमान के भीतर तार।

<!-- 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 + हे
  2. दृश्य> आउटपुट

यहां छवि विवरण दर्ज करें


2

मैंने इसे केवल विजुअल स्टूडियो को पुनः आरंभ करके तय किया था - मैं अभी dotnet tool install xxxएक कंसोल विंडो में चला था और वीएस ने अभी तक बदले गए नए पर्यावरण चर और / या पथ सेटिंग्स को नहीं उठाया था, इसलिए एक त्वरित पुनरारंभ ने समस्या को ठीक कर दिया।


1

यह बहुत बुनियादी है, मुझे यह समस्या थी, और साधारण असफलता शर्मनाक थी।

एप्लिकेशन कमांड लाइन तर्क का उपयोग करता है, मैंने उन्हें हटा दिया और फिर उन्हें वापस जोड़ दिया। अचानक यह परियोजना बनाने में विफल रही।

विज़ुअल स्टूडियो -> प्रोजेक्ट गुण -> सत्यापित करें कि आप 'डीबग' टैब का उपयोग करते हैं ('ईवेंट बनाएँ' टैब) -> कमांड लाइन तर्क

मैंने पाठ क्षेत्र का उपयोग किया और पोस्ट / प्री-बिल्ड किया, जो इस मामले में गलत था।


1

मेरा समाधान सिर्फ इतना आसान था: क्या आपने इसे बंद करने की कोशिश की है और फिर से? इसलिए मैंने कंप्यूटर को फिर से शुरू किया और समस्या दूर हो गई।


1

9009ओवरराइट स्थिति का सामना करने पर मैं भी इस समस्या में भाग गया ।

असल में, यदि फ़ाइल पहले से मौजूद है और आपने /yस्विच को निर्दिष्ट नहीं किया है (जो स्वचालित रूप से ओवरराइट हो जाता है) यह त्रुटि किसी बिल्ड से चलाने पर हो सकती है।


0

वास्तव में मैंने देखा कि किसी कारण से% windir% पर्यावरण चर कभी-कभी मिट जाता है। मेरे लिए जो काम किया गया वह विंडर चर को फिर से सेट करने के लिए c: \ windows, VS को पुनरारंभ करें, और यही है। इस तरह आप समाधान फ़ाइलों को संशोधित करने से रोकते हैं।


0

कम से कम विज़ुअल स्टूडियो अल्टीमेट 2013 में, संस्करण 12.0.30723.00 अपडेट 3, यह एक लाइन ब्रेक के साथ एक / और कथन को अलग करना संभव नहीं है:

काम करता है:

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

काम नहीं करता है:

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

0

अभी तक एक और कारण: यदि आपका पूर्व-निर्मित ईवेंट किसी अन्य प्रोजेक्ट बिन पथ को संदर्भित करता है और आपको यह त्रुटि दिखाई देती है जब msbuild चल रहा है, लेकिन विज़ुअल स्टूडियो नहीं, तो आपको मैन्युअल रूप से * .sln फ़ाइल (एक पाठ संपादक के साथ) में परियोजनाओं को व्यवस्थित करना होगा। आप जिस परियोजना को लक्ष्य कर रहे हैं, वह घटना के परियोजना से पहले बनी है। दूसरे शब्दों में, एमएसबिल्ट उस आदेश का उपयोग करता है जो परियोजनाएं * .sln फ़ाइल में सूचीबद्ध हैं जबकि वीएस परियोजना निर्भरता के ज्ञान का उपयोग करता है। ऐसा तब हुआ था जब एक उपकरण जो एक wixproj में शामिल होने के लिए एक डेटाबेस बनाता है, उसे wixproj के बाद सूचीबद्ध किया गया था।


0

मुझे लगता है कि मेरे मामले में रास्ते में रूसी प्रतीक थे (सभी परियोजनाएं उपयोगकर्ता फ़ोल्डर में थीं)। जब मैंने दूसरे फ़ोल्डर में समाधान डाला (सीधे डिस्क पर), तो सब कुछ ठीक हो गया।


0

मेरा समाधान फ़ाइल की एक प्रतिलिपि बनाने और मूल फ़ाइल पर मेरी फ़ाइल की प्रतिलिपि बनाने के लिए निर्माण कार्य में एक कदम जोड़ना था।


0

आपको यह सुनिश्चित करने की आवश्यकता है कि आपने वैश्विक रूप से ग्रंट स्थापित किया है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.