2011-06-14 2 views
1

Следующие два абзаца - фон - они просто объясняют почему Мне нужно сделать такую ​​странную вещь. Если вам все равно, вы можете пропустить их и перейти непосредственно к вопросу.
Я пользователь Vim, и я начал изучать C#. Естественно, я хочу использовать MSBuild в качестве моей makeprg. Я хочу связать горячие клавиши для общих операций разработки - Build, Очистить и Запустить. Поскольку я хочу установить свои горячие клавиши по всему миру, у меня проблема, так как имена файлов различаются в каждом проекте.Выполнение задачи Exec MSBuild отображает интерактивную оболочку

В GCC/MinGW эта проблема может быть решена легко - поскольку я уже храню важные имена файлов в переменных, я могу просто добавить в целевые файлы makefile для очистки сборки и запуска программы, а затем привязать горячие клавиши к ": make! Clean" и ": make! Run". Поэтому я решил, что могу сделать то же самое с целями MSBuild. Он отлично работает для Clean с тегом Delete (не уверен, что мне действительно нужно чистить в .NET, но вы знаете - сила привычки), но у меня есть проблема с Run.

Теперь это моя проблема: в отличие от GCC/Makefiles MinGW в, которые просто умные пакетные файлы, которые запускаются команды оболочки MSBuild использует его собственный набор команд и запускает их внутри. Это означает, что Exec задачи запускают программу без оболочки - я могу открывать окна, но я не могу использовать ее для тестирования интерактивных программ оболочки.

Есть ли способ убедить MSBuild дать мне интерактивную оболочку?

ответ

2

Вы пробовали некоторые вариации этого,

<Exec Command="start $(COMSPEC) /k &quot;$(PathTo)\My.exe &amp; exit&quot;" /> 

После побега он работает грубо это,

C:\Windows\system32\cmd.exe /k "PathTo\My.exe & exit" 

Какой будет запускать команду в командной оболочке (/ к не может быть правый переключатель cmd для вашего использования), затем, когда ваша интерактивная программа выйдет, она запустит команду «exit» и перейдет к ней.


+0

Это работает! Мне пришлось удалить обратную косую черту перед именем файла (видимо, переменная PathTo уже имеет обратную косую черту), и я также добавил команду для ожидания нажатия клавиши перед закрытием оболочки. Я закончил с этим:

Смежные вопросы