2011-01-13 4 views
12

で失敗イベントMT.exeコマンドをビルドします。Visual Studioの投稿こんにちは、私は私のポストビルドイベントから次のコマンドを実行しているコード9009

C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\mt.exe -manifest "$(ProjectDir)$(TargetName).exe.manifest" -updateresource:"$(TargetDir)$(TargetName).exe;#1" 

それは、コード9009で終了して失敗している...私はしませんなぜこれが起こるかを理解する。助言がありますか?ここで

+0

[の可能性の重複は、「コード9009で終了しました」このビルド中に何を意味します?](http://stackoverflow.com/questions/1351830/what-does-exited-with-code-9009-mean-during-this-build) –

答えて

18

mt.exeパスの前後に引用符を追加してみてください、例えば:

"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\mt.exe"

また、パスが有効であることを確認してください。

これが役に立ちます。私は一日中コード9009に対して頭を打ちました。完全な引用符で囲まれたパスはそれを機能させるようです。

+0

これは私のmpress.exeポストビルドイベントのために働いた。 – deerchao

+2

なぜ人々はディレクトリ/ファイル名のスペースが好きでないのか分かりませんでした。今私は... – Nolonar

+0

あなたは私の一日を保存しました:) –

1

潜在的なソリューションです。

あなたは これは上記のコマンドを入力して行うことのVisual Studioのイベント 機能を構築ポストを使用することができます。mt.exe -manifest app.manifest -outputresource:します。myapplicationを.exe;#1。これはおそらくうまくいかず、Visual Studioは "...コード9009で終了しました..."のようなエラーを表示します。

あなたは(あなたがそれらを通常のファイルの末尾に を見つけることができます)たとえば、メモ帳とのコメントを外し ターゲット 名=「AfterBuild」に関連するXMLタグを を使用してcsprojファイルを編集する必要があります。次に、 PostBuildEventに関連するタグを というタグ内のAfterBuildに配置してから、 プロジェクトをリロードしてコンパイルします。 .exeファイルが作成され、管理者のアクセス許可を使用して を実行する必要があります。

7

終了コード9009は、ファイルが見つかりませんでしたエラーです。ポストビルドコマンドのパスに存在するスペースは、パスと実行可能ファイル名の前後に引用符を含めない限り、コマンドプロンプトでエラーを引き起こします。基本的に、あなたのビルド後のコマンドでは、引数を指定してC:\Programを実行しようとしている:

  • Files\Microsoft
  • SDKs\Windows\v7.0A\bin\mt.exe
  • -manifest "$(ProjectDir)$(TargetName).exe.manifest"
  • -updateresource:"$(TargetDir)$(TargetName).exe;#1"

明らかにするので、あなたはしないでくださいルートディレクトリにProgramというファイルがある場合、このコマンド全体が失敗します。引用符でパスと実行をカプセル化する単一のコマンドとして評価される式全体の原因となりますので、あなたがビルド後のコマンドを変更した場合、すべてが正常に動作する必要があります:

"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\mt.exe" -manifest "$(ProjectDir)$(TargetName).exe.manifest" -updateresource:"$(TargetDir)$(TargetName).exe;#1" 

またはWindows x64のでVisualStudioをx86用に使用します

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mt.exe" 
+0

この回答はより多くのupvoted、承認された答えよりも優れています。すべての "ファイルが見つかりません"というエラーは引用関連です。答えてくれてありがとう。 –

+1

また、ビルドを実行しているユーザーがファイルシステムの場所にアクセスできることを確認してください –

0

このスレッドを読んだまで、私は愚かVSはどこmt.exe生活を知っているだろうと想定しました。 1内蔵の現在のSDKのためのマクロ、私はシステムENVARであり頼っていないですので@james

"%windowssdkdir%\bin\mt.exe" 
windowssdkdir
+0

私のPCにはこのような環境変数が定義されていません。 – DaveInCaz

+0

@DaveInCaz他にも欠けているenvarが報告されています。私の答えは、約6年前にサービスを開始したWindows 7ワークステーションを指していました。私はenvarがどのようにセットアップされたかを思い出さない。 – bvj

関連する問題