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