Visual Studio Post Build Event MT.exe命令失败,代码为9009

Sut*_*bey 12 post-build-event visual-studio

嗨我正在运行我的post build事件中的以下命令:

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

退出代码9009失败了......我不明白为什么会这样; 有什么建议?

jqa*_*jqa 18

尝试在mt.exe路径周围添加引号,例如:

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

另外,请确保路径有效.

希望这可以帮助.我整天都在反对代码9009,并且一条完整的引用路径似乎使它成功.

  • 我从来不知道为什么人们不喜欢目录/文件名中的空格.现在我做...... (2认同)

Nat*_*ler 9

退出代码9009是未找到文件错误.除了在整个路径和可执行文件名称周围包含引号之外,post build命令路径中存在的空格会在命令提示符中导致错误.基本上,在构建后的命令中,它试图C:\Program使用参数执行:

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

很明显,您没有一个名为Program驻留在根目录中的文件,因此整个命令都会失败.将引号和可执行文件封装在引号中将导致整个表达式被评估为单个命令,因此如果将post-build命令更改为:

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

或者在Windows x64中用于VisualStudio x86

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mt.exe"
Run Code Online (Sandbox Code Playgroud)