Pergunta

Eu estou tentando configurar um arquivo common.targets com algumas metas msbuild comuns que pretende utilizar na minha equipe constrói e, portanto, a importação para os meus arquivos TFSBuild.PROJ. Eu estou querendo saber qual é a melhor maneira de conseguir isso? Preciso armazenar common.targets ao lado de cada arquivo TFSBuild.proj e, portanto, ter duplicatas do arquivo de alvos para cada compilação equipe ou existe outra maneira? Eu prefiro não colocar o arquivo de alvos em cada uma das máquinas de criação.

Foi útil?

Solução

Criar Equipe tem uma fase bootstrapper antes do TFSBuild.proj é invocado em que apenas o TFSBuild.proj e outros arquivos no mesmo diretório é baixado de controle de origem. Então, se você quer que seu arquivo alvos estar sob controle de origem, você precisa colocá-lo no mesmo local que o TFSBuild.proj

Mais detalhes nesta resposta

Eu nunca tentei, mas você pode ser capaz de colocar o arquivo de alvos em um compartilhamento de rede, e importá-lo usando um compartilhamento UNC. Algo como

<Import Project="\\anothermachine\share\something.targets"/>

Mas isso exigiria que a conta de construção e todas as pessoas que executam o ambiente de trabalho baseia-se ter acesso a esse compartilhamento de rede.

Outras dicas

Coloque-o em um local comum que você gosta no controle de origem. Antes de usar as metas, fazer um get de seu arquivo TFSBuild.proj assim:

<PropertyGroup>
  <!--Path to the TFS Command Line (used for checkin and out)-->
  <TxTf>&quot;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf&quot;</TxTf>

  <WorkingDirectory>C:\YourPathHere<WorkingDirectory>
  <CustomProjTFSDir>&quot;$/YourProj/YourCustomProjPath&quot;</CustomProjTFSDir>
</PropertyGroup>

<Exec WorkingDirectory="$(WorkingDirectory)"
      Command="$(TxTf) get $(CustomProjTFSDir)"/>

A chave para este trabalho é configurar um espaço de trabalho para o usuário agente de compilação que aponta para o seu material personalizado. Este diretório não deve estar no mesmo espaço que o normal, constrói.

Vaccano

O objetivo de um arquivo comum .targets é reduzir a duplicação de seus scripts. Se você tiver várias cópias deste arquivo sob controle de origem, o que acontece quando você precisa alterá-los (para atualizar um caminho .exe talvez)? Pessoalmente, eu prefiro um local separado para os arquivos comuns que algum / todos os outros scripts de construção pode fazer referência. A única desvantagem para isso é que você provavelmente vai ser difícil de codificação o caminho para esse arquivo.

Você pode armazená-los ao lado das metas de MS em $ Volume \ Program Files \ MSBuild. A vantagem de fazer isso é que você pode criar um caminho relativo usando o construído em metadados saber "$ (MSBuildExtensionsPath) \ Path \ a \ \ seus alvos"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top