TeamBuild - É possível escolher quais projetos para compilar em tempo de compilação?
-
03-07-2019 - |
Pergunta
Estou automatizar o meu processo de compilação usando TeamFoundation e eu preciso escolher quais projetos para compilar acordo com o arquivo proj da compilação. Aqui está o cenário completo:
Eu tenho um arquivo proj que utiliza um arquivo .sln para compilar uma solução que contém 2 websites. O arquivo .sln está configurado para compilar ambos os sites na configuração de lançamento.
Meu objetivo é compilar apenas 1 site por tipo de construção, ou seja, eu quero o BuildType1 para compilar website 1 e BuildType2 para compilar o website 2.
Será que é possível "modificar" o .sln de tal maneira que eu posso desmarcar um dos sites para compilar? Uma vez que é um processo automatizado, eu não posso mudar o .sln manualmente cada vez que eu quiser compilar apenas um site.
Solução
Veja a seção SolutionToBuild no arquivo TFSBuild.proj.
<SolutionToBuild Include="$(BuildProjectFolderPath)/path/MySolution.sln">
<Targets>MyCustomTarget1;MyCustomTarget2</Targets>
<Properties> Configuration=Release</Properties>
</SolutionToBuild>
Outras dicas
Existem duas maneiras principais que você pode controlar a compilação:
-
criar um separado Tipo construir em sua Team Explorer. Isto terá seu próprio arquivo TFSBuild.proj completamente independente, para que ele possa construir a mesma base de código de uma maneira completamente diferente. Defina o SolutionToBuild-se para construir apenas o que você quer (como descrito na resposta aceite).
-
Use um tipo de compilação e defina sua TFSBuild.proj-se de usar uma propriedade para controlar o que é construído (isto requer mais profundo entendimento od scripts de MSBuild). Na caixa de diálogo Fila de Construção Nova você pode usar o / p: flag de linha de comando para definir a propriedade como você precisar dele. por exemplo. "/ P: IncrementalGet = false; IncrementalBuild = false; ForceGet = true" irá forçar uma compilação normalmente incremental para fazer uma reconstrução completa. Isso é útil para situações occasoinal, mas não é uma boa ideia para o dia a dia aumenta à medida que você tem que definir os parâmetros manualmente de cada vez.