Эта проблема
Когда я запускаю следующую команду в командной строке:
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, это похоже на соответствующие детали.)
