Como criar um script de compilação simples para o Visual Studio a partir da linha de comando?

Eu tenho muitas soluções de projeto do Visual Studio em vários diretórios (todos com a extensão .sln) e quero escrever um script em lote simples que crie automaticamente todas as soluções listadas no arquivo em lotes.

Consigo criar manualmente uma solução iniciando oVisual Studio Command Prompt (que é apenas uma instância da linha de comandos com o seguinte comando executado

"%comspec%" /k "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86

Após o qual eu construo o projeto chamando:

devenv "path\to\solutionFile\projectSolution1.sln" /build Debug

Isso criará o projeto (supondo que o projeto não tenha erros) e eu enxágüe e repito para cada projeto que deseja criar.

Contudo quando eu tiver o seguinte em um arquivo em lotes chamadobuild.bat:

"%comspec%" /k "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86  
echo "Starting Build for all Projects with proposed changes" 
echo . 
devenv "path\to\solutionFile\projectSolution2.sln" /build Debug
devenv "another\path\to\solutionFile\projectSolution3.sln" /build Debug
devenv "yet\another\path\to\solutionFile\projectSolution4.sln" /build Debug
echo "All builds completed."
pause

O script em lote executa apenas a primeira linhae aguarda até digitarexit antes de executar os outros. Meu entendimento disso com base na pesquisa que fiz em arquivos em lotes e em todas as perguntas do StackOverflow é quecmd na verdade, invoca outra instância de si mesma que executavcvarsall.bat para configurar o ambiente de construção.

Isso não funcionará como digitaçãoexit mata essa instância comdevenv configurar e os comandos a seguir não podem ser executados comodevenv não é um comando reconhecido (já que o caminho exportado não existe mais)

Em resumo, como isso pode ser alcançado (passando o restante dos comandos para a instância cmd comdevenv definido) em um único arquivo em lote? Entendo que essa não é uma maneira robusta (e há muitas ferramentas que fazem isso) de invocar compilações, mas só espero ter um script em lote para automatizar o trabalho manual de chamar individualmente esses projetos.

questionAnswers(2)

yourAnswerToTheQuestion