Подтвердить что ты не робот

Событие сборки сборки Visual Studio Post MT.exe завершилось с кодом 9009

Привет. Я запускаю следующую команду из события post post:

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

Он не работает с Exited с кодом 9009... Я не понимаю, почему это происходит; любые предложения?

4b9b3361

Ответ 1

Попробуйте добавить цитаты вокруг пути mt.exe, например:

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

Также убедитесь, что путь действителен.

Надеюсь, это поможет. Я весь день бил головой против кода 9009, и полный путь цитирования, похоже, заставляет его работать.

Ответ 2

Код выхода 9009 - это ошибка, не найденная в файле. Пространства, которые существуют на вашем пути к команде post build, вызывают ошибки в командной строке, если вы не включаете кавычки по всему пути и имени исполняемого файла. По существу, в вашей команде 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"

Или использовать для VisualStudio x86 в Windows x64

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

Ответ 3

Вот потенциальное решение:

Вы можете использовать событие Post build функциональности Visual Studio это набрав команду выше: mt.exe -manifest app.manifest -outputresource: myapplication.exe; # 1. Вероятно, это не сработает, и Visual Студия даст вам ошибку, как "... вышел с кодом 9009...".

Вы должны отредактировать файл csproj, используя например, блокнот и раскоммент теги XML, связанные с объектом Name= "AfterBuild" (вы можете найти их в конце файла обычно). Затем, поместите теги, связанные с PostBuildEvent в связанных тегах к AfterBuild, а затем перезагрузить проекта и компиляции. Он будет производить .exe, который необходимо выполнить с правами администратора.

Ответ 4

До тех пор, пока я не прочитал этот поток, я по глупости предположил, что VS будет знать, где живет mt.exe. +1 до @james

Поскольку нет встроенного макроса для текущего SDK, я полагался на системную envar, windowssdkdir

 "%windowssdkdir%\bin\mt.exe"