13

こんにちは、ビルド後のイベントから次のコマンドを実行しています。

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

Exited with code 9009 で失敗しています...なぜこれが起こるのかわかりません。助言がありますか?

4

4 に答える 4

18

mt.exeパスの前後に引用符を追加してみてください。

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

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

お役に立てれば。私は一日中コード 9009 に対して頭を悩ませてきましたが、完全に引用されたパスが機能しているようです。

于 2011-02-01T17:13:48.000 に答える
10

終了コード 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"
于 2012-02-16T19:05:04.237 に答える
1

考えられる解決策は次のとおりです。

Visual Studio のポスト ビルド イベント機能を使用して、上記のコマンドを入力してこれを行うことができます: mt.exe -manifest app.manifest -outputresource:myapplication.exe;#1。これはおそらく機能せず、Visual Studio は "...exited with code 9009..." のようなエラーを返します。

メモ帳などを使用して csproj ファイルを編集し、Target Name="AfterBuild" に関連する XML タグのコメントを解除する必要があります (通常、ファイルの末尾にあります)。その後、PostBuildEvent に関連するタグを AfterBuild に関連するタグ内に配置し、プロジェクトをリロードしてコンパイルします。管理者権限で実行する必要がある .exe ファイルが生成されます。

于 2011-01-19T11:51:17.730 に答える
1

このスレッドを読むまで、私は愚かにも VS がどこにmt.exe住んでいるかを知っているだろうと思っていました。+1 に@james

現在の SDK には組み込みマクロがないため、システム環境変数に依存していました。windowssdkdir

 "%windowssdkdir%\bin\mt.exe"
于 2016-06-21T03:20:48.363 に答える