2011-01-13 140 views
12

嗨,我從我的後生成事件以下命令:Visual Studio中後生成事件MT.exe命令失敗,代碼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) – 2016-03-17 06:09:58

回答

18

嘗試增加周圍mt.exe路徑引號,例如:

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

同時,確保路徑是有效的。

希望這會有所幫助。我一整天都在抨擊代碼9009,並且完全引用了它的路徑似乎使它成功。

+0

這適用於我的mpress.exe後建立事件。 – deerchao 2011-12-12 13:17:40

+2

我從來不知道爲什麼人們不喜歡目錄/文件名中的空格。現在我做... – Nolonar 2013-05-03 09:31:15

+0

你節省了我的一天:) – 2014-10-01 06:36:26

1

這是一個潛在的解決方案:

可以使用後生成事件的Visual Studio 功能做 此上方輸入命令:mt.exe -manifest app.manifest -outputresource:爲MyApplication .EXE;#1。這可能將無法正常工作和Visual Studio的 會給你喜歡 一個錯誤「...代碼爲9009退出......」。

你必須編輯使用 例如與目標 NAME =「AfterBuild」記事本並取消 的XML標籤的csproj文件(你可以在文件的結尾找到他們 通常情況下)。然後, 地方涉及到相關 到AfterBuild,然後在標籤內的 PostBuildEvent標籤,重新加載 項目和編譯。它將生成一個 .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 64使用的VisualStudio 86

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

直到閱讀此線程,我傻傻的假設VS會知道mt.exe生活。 +1 @james

,因爲沒有內置宏當前SDK,我仗着系統ENVAR,windowssdkdir

"%windowssdkdir%\bin\mt.exe" 
相關問題