Эта проблема

Когда я запускаю следующую команду в командной строке:

devenv /? > out.txt & del out.txt

Я получаю следующую ошибку:

The process cannot access the file because it is being used by another process.

Это минимальное повторное решение проблемы в гораздо большем сценарии сборки.

Об этой проблеме сообщили несколько пользователей сценария сборки. У некоторых пользователей всегда есть проблема, у некоторых - нет.

Что такое devenv?

devenv относится к devenv.com , небольшой интерфейсной утилите, которая вызывает devenv.exe , основной исполняемый файл Visual Studio IDE. Подробнее в статье MSDN Командная строка Devenv.

Когда devenv.exe вызывается без аргументов, он открывает IDE Visual Studio. Когда devenv.exe вызывается с правильными аргументами, он может создавать программы из командной строки. В обоих случаях devenv.exe возвращается немедленно.

Однако devenv.com будет ждать, пока devenv.exe почти завершится, но, как представляется, он завершается немного раньше, а devenv.exe все еще работает и выдает сообщения, что вызывает ошибку.

Вопрос

Как я могу надежно предотвратить возникновение этой ошибки? Добавление паузы (например, timeout 2) сразу после вызова devenv - это все, о чем я могу думать прямо сейчас.

Может быть, есть способ обернуть команду devenv во что-то, что возвращает управление только после полного завершения команды?

Среда

  • Microsoft Windows версия 10.0.17134.165
  • Microsoft Visual Studio 2017 версия 15.0.27703.2035

РЕДАКТИРОВАТЬ: проблема возникает, даже если команды запускаются из пакетного сценария (в соответствии с https://superuser.com/a/908744/404097, это похоже на соответствующие детали.)

0