Como faço para obter mais tardar a partir de uma solução do Visual Studio a partir da linha de comando?

StackOverflow https://stackoverflow.com/questions/34204

Pergunta

Como faço para obter a versão mais recente da minha solução recursivamente como o seu feito na solução menu de contexto do explorador do Visual Studio?Eu quero fazer isso a partir da linha de comando ou através de uma macro.Eu estou tentando automatizar uma parte da minha rotina diária, usando um conjunto de arquivos em lote.Eu tenho certeza que um monte de desenvolvedores gostaria de ter algo parecido com isto.

tf get só fica conteúdo de uma pasta recursivamente (não a solução).Não olhe para as dependências do projeto e assim por diante.Que não funcionam.

Foi útil?

Solução

TFS tem um .Net SDK que permite que você crie os seus próprios programas que interagem com um Servidor do TFS.Você poderia escrever um pequeno programa que executa a tarefa que você precisa:

TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("MyServer");
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

WorkSpace[] myWorkSpaces = vcs.QueryWorkSpaces("MyWorkSpaceName", "MyLoginName", "MyComputer");

myWorkSpaces[0].Get(VersionSpec.Latest, GetOptions.GetAll);

Outras dicas

Concordo que a Solução Explorer "by design" omitir todos os objetos, mas apenas se você não incluí-los como Solução itens, que eu acredito que você deve incluir em suas soluções, para que um novato pode abrir a solução, fazer um Get Latest, e sei que eles tem todas as dependências necessárias para que a solução, e não aprender como fazê-lo através de uma ferramenta de linha de comando, ou use o gerenciador de Controle de Origem, se eles não querem.

Incluindo todos os não-dependências de código como solução itens (nós organizar as pastas de solução utilizando a mesma estrutura de pasta como fonte de controle de pastas) reduz o "voodoo" o conhecimento necessário para abrir e compilar a solução para novos desenvolvedores em um projeto.

Seria bom se você pudesse vincular toda a árvores de pasta para uma pasta de solução no VS solução.

Se você tiver projetos dependentes em uma pasta diferente.Use este ciclo através de todos os sub-diretórios para pegar o mais recente, para cada projeto:

Iniciar no diretório principal C:\Project\SupportingProjects

FOR /D %%G IN ("*") DO ECHO ..from....%%G && tf get C:\Projects\SupportingProjects\%%G 

::Get the latest for the Main project
tf get C:\Projects\MainProject /recursive 

No meu caso, o MainProject pasta que contém o arquivo de solução e o arquivo de projeto.

Eu achei isso fácil e simples.

Mais sobre o comando FOR: http://ss64.com/nt/for_d.html

Bem...Parece que você tem três opções.

  1. Em seu arquivo de lote, emitir um tf obter em cada diretório do ramo que você deseja.

  2. reorganize a sua solução para que todas as dependências estão sob o mesmo caminho de raiz.

  3. Utilize o visual do botão direito do mouse sobre o projeto carregado e emitir o comando get.

A única vez que é, na verdade, a solução de consciência é quando o projeto é carregado no IDE;ou quando ele é carregado pelos servidores de compilação.

Eu sei que você mencionou arquivos em lote, mas deixe-me jogar outra coisa para você.

Eu estou indo supor que você está usando a versão de 2005 do TFS.2008 tem tudo o agendamento de coisas construído em.

No entanto, você também pode usar CruiseControl.net para fazer agendada cria para você.Eu tenho usado ambos os TFS 2008 e Administrador e ambos parecem funcionar muito bem.

Mais uma solução possível é utilizar o powershell.O link a seguir é um projeto de código de exemplo que mostra como chegar a uma solução do TFS e construí-lo localmente.Powershell é uma solução muito melhor do que regular arquivos em lote.

http://www.codeproject.com/KB/install/ExtractAndBuild.aspx

Não faça isso.VS não é tão inteligente como você pensa.(Como evidenciado pelo misterioso & fútil checkouts que todo mundo já experimentou durante 3+ produto de ciclos, você & eu incluído.Esta não é a marca de um sistema confiável!)

O que você descreve apenas funciona para o projeto-a-projeto de referências.Executar operações de controlo de origem do Solution Explorer "by design" omitir:

  • projeto-para-montagem referências
  • vídeo, som, PDFs, qualquer outro tipo de mídia que VS não apoio, mas pode desempenhar um papel integral no produto
  • MSBuild *.metas de arquivos que são referenciados em seus projetos
  • quaisquer ficheiros de qualquer espécie que são referenciados a partir de alvos personalizado
  • qualquer parte 3 executáveis exigido pelo processo de compilação
  • etc

Apenas dizer nenhum a falta de sincronização.Por esse caminho, só dores de cabeça mentira.

Executar 'tf ficar com nenhum caminho âmbito de aplicação a partir da linha de comando, ou clique direito -> Obter a partir da raiz $/ nó no gerenciador de Controle de Origem.

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