A saída do programa foi redirecionada para o arquivo, mas o arquivo permanece bloqueado por uma fração de tempo após o término do programa

0

O problema

Quando executo o seguinte comando em um prompt de comando:

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

Eu recebo o seguinte erro:

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

Este é um caso de reprodução mínima para um problema em um script de criação muito maior .

Esse problema foi relatado por vários usuários do script de construção. Alguns usuários sempre têm o problema, alguns nunca têm isso.

O que é devenv ?

devenv refere-se a devenv.com , um pequeno utilitário de front-end que invoca devenv.exe , o principal executável do IDE do Visual Studio. Mais detalhes no artigo do MSDN Comutadores de linha de comando Devenv .

Quando devenv.exe é invocado sem argumentos, ele abre o IDE do Visual Studio. Quando devenv.exe é invocado com os argumentos certos, ele pode construir programas na linha de comando. Em ambos os casos, devenv.exe retorna imediatamente.

No entanto, devenv.com esperará até que devenv.exe tenha quase concluído, mas parece terminar um pouco antes e devenv.exe ainda está em execução e emitindo mensagens, causando o erro.

Pergunta

Como eu poderia impedir de forma confiável esse erro? Adicionar uma pausa (por exemplo, timeout 2 ) logo após a invocação de devenv é tudo em que consigo pensar agora.

Talvez haja uma maneira de agrupar o comando devenv em algo que retorne o controle somente quando o comando foi totalmente encerrado?

Ambiente

  • Microsoft Windows versão 10.0.17134.165
  • Microsoft Visual Studio 2017 versão 15.0.27703.2035

EDIT: O problema ocorre mesmo se os comandos forem executados a partir de um script em lote (de acordo com o link , isso parece um detalhe relevante.)

    
por François Beaune 30.08.2018 / 16:38

0 respostas