このビルド中に「コード9009で終了」とはどういう意味ですか?


292

このエラーメッセージはどういう意味ですか?この問題を修正するにはどうすればよいですか?

AssemblyInfo.csはコード9009で終了しました


この問題は、Visual Studioの.NETソリューションのビルド後の手順の一部として発生している可能性があります。


7
OPはこの問題を解決するために戻ってきませんが、多くの答えと多くのGoogleジュースがあります。では、問題を推測してみましょう。
アンソニー・マストリアン

13
アウトプットウィンドウは私が持っていたこの問題への洞察を私に与えました
hanzolo

回答:


241

ビルド前またはビルド後のイベントコマンドで実行されているコマンドの完全パスを指定しようとしましたか?

xcopyVisual Studio 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の[出力]タブを確認すると、問題が表示されます。私の場合、私はスペースを含むパスにアクセスしようとしていました
Phil Hale

16
これと同様の問題がありましたが、フォルダ名にスペースが含まれていたためです。パスを引用符("$(SolutionDir)packages\NUnit.2.5.10.11092\tools\"nunit-console "$(TargetPath)")で囲んで解決しました。
ジャスティンモーガン、

1
Javaアプレットを使用してJSとCSSをプリコンパイルするプリビルドイベントで同様の問題が発生しました。Javaランタイムをサーバーに配置することを怠っていたことがわかりました。
ソース

2
PATH環境変数がどういうわけか失われる可能性はありますか?このエラーが時々発生します。私はnpm install事前構築イベントとしてセットアップしましたが、最初は機能します(したがって、すべてがセットアップされていると思います)が、日中はランダムに機能しなくなり(通常、ソリューション/ブランチを切り替えるときに)、それはもう機能しません。について知っていnpmます。VSを再PATH起動すると「修正」されます。つまり、正しく設定されていますが、VS で起動したようです。VS内から環境変数を表示する方法があった場合、これを確認できました。
jamiebarrow 2014年

2
あなたは異なる環境でのクラッシュからのビルドを保護したい場合は、のは、WindowsがDにインストールされている、としましょう:\、使用環境は@thehhv答えの組み合わせでvarsは:%systemroot%\System32\xcopy ...
Dorival

110

エラーコード9009は、エラーファイルが見つからないことを意味します。ここで回答に掲載されている根本的な理由はすべて、理由を理解するための良いインスピレーションですが、エラー自体は単に悪いパスを意味します。


1
ファイルが見つからない問題は、csprojファイル内の参照が$(PROGRAMFILES)\ Microsoft SDKs \ TypeScript \ tscであり、$(PROGRAMFILES)\ Microsoft SDKs \ TypeScript \ 1.0 \ tsc
RHAD

最初の質問に実際にお答えいただきありがとうございます。
AntonK 2018年

また、コマンド自体が見つからなかった場合でも、試行されたコマンドに関連するファイルが見つからないことを意味します。delの代わりにdeleteを使用していました。それもあなたに9009を与えるでしょう。
Mircea Ion

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"か?どこに、どのファイルに行を追加する必要がありますか?ありがとう
surfmuggle 2012年

2
Path環境変数にエントリを追加する必要がありました。詳細については、出力ウィンドウを確認してください。
paqogomez 2013

注意。これは多くのビルドサーバーで失敗します:blogs.clariusconsulting.net/kzu/devenvdir-considered-harmful
George Mauer

2
x64ビットツールチェーンのおかげで、次のように解決しました: "$(DevEnvDir).. \ VC \ vcvarsall.bat"
codekiddy

1
VS 2017の場合、ファイルは"$(DevEnvDir)..\Tools\VsDevCmd.bat"
Florian Koch、

57

ほとんどの場合、結果のパスにスペースがあります。

パスを引用符で囲んでスペースを許可することで、これを回避できます。例えば:

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

9
+1-これはまさに私が抱えていた問題です。プロジェクトをローカルでビルドしたとき、ビルド後のコマンドは機能しましたが、ビルドサーバーでビルドしたときに失敗しました。修正するために、コマンドを二重引用符で囲みました。ありがとう。
sheikhjabootie '09 / 09/29

それで、エラー9009が「ファイルが見つかりません」であると推測するのは理にかなっていますか?個人的には、「MSBuildエラー9009とは何ですか?」スタンドアロンの質問として完全に問題ないはずですが、マイクロソフトに向けられています!
ダグ2013


10

ビルド後のイベントスクリプトが、指定されたパスに存在しないバッチファイルを実行しようとしたときに、エラー9009が発生しました。


6

Path環境変数を編集したときに、このエラーが発生しました。編集後、誤って追加しましたPath=てパス文字列の先頭にしました。このような不正な形式のパス変数を使用すると、コマンドラインでXCopyを実行できず(コマンドやファイルが見つからない)、Visual Studioはビルド後のステップの実行を拒否し、コード9009のエラーを示しました。

XCopyは通常、C:\ Windows \ System32にあります。Path環境変数によってDOSプロンプトでXCopyが解決されると、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 2017年

1
これはマスクしないでください
AltF4_ 2017

5

スペルを確認してください。実行可能ファイルを呼び出そうとしましたが、名前にスペルミスがあり、exited with code 9009メッセージが表示されました。


1
システムに実行可能ファイルが存在するかどうかのチェックを追加します。
ジョシュアドレイク

5

私の場合、コマンドを呼び出す前に、適切なディレクトリに "CD"(ディレクトリの変更)する必要がありました。これは、呼び出す実行可能ファイルがプロジェクトディレクトリにあったためです。

例:

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

1
これにより、Visual Studioのdevenv.exeを実行している問題が修正されましたが、2回目にフォルダーを指定する必要はありません。build.batを呼び出すだけです
FrinkTheBrave

4

別のバリアント:

今日、私はwin32でcronからpythonインタープリターを呼び出し、ExitCode(%ERRORLEVEL%)9009を取得します。これは、cronが使用するシステムアカウントにPythonディレクトリへのパスがないためです。


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コマンドをWebからコピーしてVSに貼り付けると、問題が発生することがあります。


jesseはxcopyコマンドの途中で改行を入れないことについて良い点を述べていますが、一般的にはこのフィールドに改行を入れることが有効であることに注意してください。各行は独自のコマンドとして解釈されます。
RJFalconer 2013年

3

ビルド前のステップで "> myFile.txt"を行末に追加し、実際のエラーがないかファイルを検査しました。


2

私にとって、ディスク容量は少なく、書き込みできないファイルは後で存在すると予想されていました。他の回答では、ファイルの欠落(または名前が間違っているか、名前で正しく参照されていないファイル)について言及されていましたが、根本的な原因はディスク容量の不足でした。


2

私にとっては、大きなソリューション(〜80プロジェクト)で、1つのPostSharpバージョンから次のバージョンにnugetパッケージをアップグレードした後に起こりました。PreBuildイベントにコマンドがあるプロジェクトのコンパイラエラーがあります。

'cmd'は、内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets(1249,5):error MSB3073:command "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->プロジェクトのプロパティ-> [デバッグ]タブ([ビルドイベント]タブではなく)を使用していることを確認->コマンドライン引数

私は、PostおよびPre-buildのテキスト領域を使用しましたが、この場合は誤りでした。


1

私の解決策は単純です:あなたはそれをオフにしてもう一度オンにしてみましたか?だから私はコンピュータを再起動し、問題はなくなりました。


1

9009上書きの状況に直面したときにも、この問題に遭遇しました。

基本的に、ファイルがすでに存在し、/yスイッチを指定していない場合(自動的に上書きされます)、ビルドから実行すると、このエラーが発生する可能性があります。


0

実際、何らかの理由で%windir%環境変数が消去されることがあることに気付きました。私にとってうまくいったことは、windir環境変数をc:\ windowsに再設定し、VSを再起動することでした。これにより、ソリューションファイルを変更する必要がなくなります。


0

少なくともVisual Studio Ultimate 2013、バージョン12.0.30723.00 Update 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

グローバルにインストールしたことを確認する必要があります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.