É uma prática recomendada confirmar um arquivo .sln para o controle de origem? Quando é apropriado ou inapropriado fazer isso?
Atualização Houve vários pontos positivos nas respostas. Obrigado pelas respostas!
É uma prática recomendada confirmar um arquivo .sln para o controle de origem? Quando é apropriado ou inapropriado fazer isso?
Atualização Houve vários pontos positivos nas respostas. Obrigado pelas respostas!
Respostas:
Acho que está claro pelas outras respostas que os arquivos de solução são úteis e devem ser confirmados, mesmo se não forem usados para compilações oficiais. Eles são úteis para qualquer pessoa que use recursos do Visual Studio, como Go To Definition / Declaration.
Por padrão, eles não contêm caminhos absolutos ou quaisquer outros artefatos específicos da máquina. (Infelizmente, algumas ferramentas de suplemento não mantêm adequadamente esta propriedade, por exemplo, AMD CodeAnalyst.) Se você tiver o cuidado de usar caminhos relativos em seus arquivos de projeto (C ++ e C #), eles serão independentes da máquina também.
Provavelmente, a pergunta mais útil é: quais arquivos você deve excluir? Aqui está o conteúdo do meu arquivo .gitignore para meus projetos do VS 2008:
*.suo
*.user
*.ncb
Debug/
Release/
CodeAnalyst/
(A última entrada é apenas para o criador de perfil AMD CodeAnalyst.)
Para o VS 2010, você também deve excluir o seguinte:
ipch/
*.sdf
*.opensdf
Sim - acho que é sempre apropriado. As configurações específicas do usuário estão em outros arquivos.
Você definitivamente deveria ter. Além das razões que outras pessoas mencionaram, é necessário tornar possível uma etapa de construção de todos os projetos.
Em geral, concordo que os arquivos de solução devem ser verificados, no entanto, na empresa para a qual trabalho fizemos algo diferente. Temos um repositório bastante grande e os desenvolvedores trabalham em diferentes partes do sistema de vez em quando. Para apoiar a maneira como trabalhamos, teríamos um grande arquivo de solução ou vários menores. Ambos têm algumas deficiências e requerem trabalho manual por parte dos desenvolvedores. Para evitar isso, criamos um plug-in que trata de tudo isso.
O plug-in permite que cada desenvolvedor verifique um subconjunto da árvore de origem para trabalhar, simplesmente selecionando os projetos relevantes do repositório. O plug-in então gera um arquivo de solução e modifica os arquivos de projeto na hora para a solução fornecida. Ele também lida com referências. Em outras palavras, tudo que o desenvolvedor precisa fazer é selecionar os projetos apropriados e então os arquivos necessários são gerados / modificados. Isso também nos permite personalizar várias outras configurações para garantir os padrões da empresa.
Além disso, usamos o plug-in para oferecer suporte a várias políticas de check-in, o que geralmente evita que os usuários enviem código defeituoso / não compatível ao repositório.
Sim, as coisas que você deve se comprometer são:
Coisas que você não deve cometer são:
Em relação a outros arquivos gerados automaticamente, há um tópico separado .
Sim, deve fazer parte do controle de origem. Sempre que você adicionar / remover projetos de seu aplicativo, .sln seria atualizado e seria bom tê-lo sob controle de origem. Isso permitiria que você retirasse as versões do código 2 do aplicativo e fizesse uma compilação diretamente (se necessário).
Sim, você sempre deseja incluir o arquivo .sln, ele inclui os links para todos os projetos que estão na solução.
Fazemos porque mantém tudo sincronizado. Todos os projetos necessários estão localizados juntos e ninguém precisa se preocupar em perder um. Nosso servidor de construção (Ant Hill Pro) também usa o sln para descobrir quais projetos construir para um lançamento.
Normalmente colocamos todos os nossos arquivos de soluções em um diretório de soluções. Dessa forma, separamos um pouco a solução do código e é mais fácil escolher o projeto no qual preciso trabalhar.
O único caso em que você consideraria não armazená-lo no controle de origem seria se você tivesse uma grande solução com muitos projetos que estavam no controle de origem e você quisesse criar uma pequena solução com alguns dos projetos da solução principal para alguns requisito transitório privado.
Nós mantemos ou solucionamos arquivos no TFS Version Control. Mas como a solução principal é realmente grande, a maioria dos desenvolvedores possui uma solução pessoal contendo apenas o que precisam. O arquivo de solução principal é usado principalmente pelo servidor de construção.
.slns são a única coisa com que não tivemos problemas no tfs!