Pergunta

Possível duplicata:
NAnt ou MSBuild, qual escolher e quando?

Qual é a melhor ferramenta de construção para .LÍQUIDO?

Eu uso atualmente NAnt mas só porque tenho experiência com FormigaMSBuild preferido?

Foi útil?

Solução

Na verdade, usamos uma combinação de NAnt e MSBuild com CruiseControl.NAnt é usado para controle de fluxo de script e chama o MSBuild para compilar projetos.Depois que a construção física é acionada, o NAnt é usado para publicar as saídas de construção do projeto individual em um local compartilhado.

Não tenho certeza se isso é o melhor processo.Acho que muitos de nós ainda estamos procurando uma ótima ferramenta de construção.Uma coisa promissora que ouvi recentemente no .NET Rocks, episódio 362, é PSake de James Kovac, um sistema de compilação baseado inteiramente no PowerShell.Parece realmente promissor, pois o que você pode fazer com o PowerShell é bastante ilimitado em teoria.

Outras dicas

Eu só gostaria de jogar Construtor Final na mistura.Não é grátis, mas se você está farto de editar XML arquivos e quer um pouco melhor (OMI) ambiente para trabalhar, eu tentaria.

Já trabalhei com todos eles e sempre voltei ao FinalBuilder.

Há outra nova ferramenta de construção (um wrapper muito inteligente) chamada NUBuild.É leve, de código aberto e extremamente fácil de configurar e oferece manutenção quase sem toque.Gosto muito dessa nova ferramenta e a tornamos uma ferramenta padrão para a construção e integração contínua de nossos projetos (temos cerca de 400 projetos de 75 desenvolvedores).Experimente.

http://nubuild.codeplex.com/

  • Interface de linha de comando fácil de usar
  • Capacidade de atingir todos .LÍQUIDO Versões -quadro, ou seja, 1,1, 2.0, 3.0 e 3.5
  • Suporta configuração baseada em XML
  • Suporta referências de projeto e arquivo
  • Gera automaticamente a “lista de compilação encomendada completa” para um determinado projeto - sem manutenção de toque.
  • Capacidade de detectar e exibir dependências circulares
  • Executar compilação paralela - decide automaticamente qual dos projetos na lista de compilação gerada pode ser construída de forma independente.
  • Capacidade de lidar com assemblies proxy
  • Fornece uma pista visual para o processo de construção, por exemplo, mostrando "% concluído", "status atual" etc.
  • Gera registro de execução detalhado tanto em xml quanto em formato de texto
  • Facilmente integrado comCruiseControl.NET Sistema de integração contínua
  • Pode usar o Logger personalizado como o XMLLOGger ao segmentar a versão 2.0 +
  • Capacidade de analisar logs de erros
  • Capacidade de implantar assemblies construídos no local especificado pelo usuário
  • Capacidade de sincronizar o código-fonte com o sistema de controle de fonte
  • Capacidade de gerenciamento de versão

Eu uso o MSBuild completamente para construção.Aqui está meu script genérico do MSBuild que pesquisa arquivos .csproj na árvore e os cria:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\bin\xUnit\xunitext.runner.msbuild.dll" TaskName="XunitExt.Runner.MSBuild.xunit"/>
  <PropertyGroup>
    <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
    <DeployDir>$(MSBuildProjectDirectory)\Build\$(Configuration)</DeployDir>
    <ProjectMask>$(MSBuildProjectDirectory)\**\*.csproj</ProjectMask>
    <ProjectExcludeMask></ProjectExcludeMask>
    <TestAssembliesIncludeMask>$(DeployDir)\*.Test.dll</TestAssembliesIncludeMask>
  </PropertyGroup>

  <ItemGroup>
    <ProjectFiles Include="$(ProjectMask)" Exclude="$(ProjectExcludeMask)"/>
  </ItemGroup>

  <Target Name="Build" DependsOnTargets="__Compile;__Deploy;__Test"/>

  <Target Name="Clean">
    <MSBuild Projects="@(ProjectFiles)" Targets="Clean"/>
    <RemoveDir Directories="$(DeployDir)"/>
  </Target>

  <Target Name="Rebuild" DependsOnTargets="Clean;Build"/>

  <!--
  ===== Targets that are meant for use only by MSBuild =====
  -->
  <Target Name="__Compile">
    <MSBuild Projects="@(ProjectFiles)" Targets="Build">
      <Output TaskParameter="TargetOutputs" ItemName="AssembliesBuilt"/>
    </MSBuild>
    <CreateItem Include="@(AssembliesBuilt -> '%(RootDir)%(Directory)*')">
      <Output TaskParameter="Include" ItemName="DeployFiles"/>
    </CreateItem>
  </Target>

  <Target Name="__Deploy">
    <MakeDir Directories="$(DeployDir)"/>
    <Copy SourceFiles="@(DeployFiles)" DestinationFolder="$(DeployDir)"/>
    <CreateItem Include="$(TestAssembliesIncludeMask)">
      <Output TaskParameter="Include" ItemName="TestAssemblies"/>
    </CreateItem>
  </Target>

  <Target Name="__Test">
    <xunit Assembly="@(TestAssemblies)"/>
  </Target>
</Project>

(Desculpe se é um pouco denso.Markdown parece estar eliminando as linhas em branco.)

É muito simples, uma vez que você entende os conceitos e todas as dependências são tratadas automaticamente.Devo observar que usamos arquivos de projeto do Visual Studio, que possuem muita lógica incorporada, mas esse sistema permite que as pessoas construam de forma quase idêntica tanto no IDE do Visual Studio quanto na linha de comando e ainda oferece a flexibilidade de adicionar coisas para a construção canônica como o teste xUnit que você vê no script acima.

O PropertyGroup é onde toda a configuração acontece e as coisas podem ser personalizadas, como excluir determinados projetos da construção ou adicionar novas máscaras de montagem de teste.

O ItemGroup é onde acontece a lógica que encontra todos os arquivos .csproj na árvore.

Depois, há os alvos, que a maioria das pessoas familiarizadas com make, nAnt ou MSBuild devem ser capazes de seguir.Se você chamar o destino Build, ele chamará __Compile, __Deploy e __Test.O destino Clean chama o MSBuild em todos os arquivos do projeto para que eles limpem seus diretórios e, em seguida, o diretório de implantação global é excluído.Reconstruir chama Limpar e depois Construir.

Ancinho e Albacore é uma excelente combinação.O poder do Ruby e sem XML.

.NET Open Source 5 - Automação .NET com Rake e Albacore por Liam McLennan [Tekpub. com]

Estamos usando Quicar, uma estrutura para scripts de construção mais limpos em C#.

Eu uso um software comercial, Estúdio de construção automatizado para o propósito de construção.

Usamos o MSBuild porque começamos com o Visual Studio 2005 (agora Visual Studio 2008) e o MSBuild já estava "integrado" ao SDK: há menos manutenção no servidor de compilação.Na verdade, é um clone do NAnt - ambas as ferramentas são infinitamente flexíveis, pois permitem criar tarefas de construção personalizadas em código, e ambas têm um conjunto decente de tarefas de construção de comunidade já criadas.

Usando uma linguagem de script dinâmica como Python, BOO, Ruby, etc.criar e manter scripts de construção pode ser uma boa alternativa para um baseado em XML como o NAnt.(Eles tendem a ser mais fáceis de ler do que XML.)

Já usei os dois e prefiro NAnt.É muito difícil para mim dizer que um é “melhor” que o outro.

Também depende o que você está construindo.O Biblioteca de tarefas MSBuild SDC tem algumas tarefas especiais.Por exemplo, para DE ANÚNCIOS, BizTalk, etc.

Existem mais de 300 tarefas incluídas nesta biblioteca, incluindo tarefas para:Criação de sites, criação de pools de aplicativos, criação de usuários ActiveDirectory, executando FxCop, configurando servidores virtuais, criando arquivos zip, configurando COM+, criando compartilhamentos de pasta, instalando no GAC, configurando servidor SQL, Configurando BizTalk 2004 e BizTalk 2006, etc.

Usei o MSBuild e o NAnt e prefiro o MSBuild, principalmente porque requer muito menos configuração por padrão.Embora você possa complicar demais as coisas e carregar o MSBuild com muito lixo de configuração também, na sua forma mais simples, você pode simplesmente apontá-lo para um arquivo de solução/projeto e executá-lo, o que, na maioria das vezes, na maioria dos casos, é suficiente.

UppercuT usa NAnt para construir e é o Build Framework incrivelmente fácil de usar.

Construções automatizadas tão fáceis quanto (1) nome da solução, (2) caminho de controle de origem, (3) nome da empresa para a maioria dos projetos!

http://projectuppercut.org/

Algumas boas explicações aqui: Gancho

De modo geral, tenho a impressão de que o NAnt oferece mais flexibilidade em comparação com o MSBuild, enquanto (com minhas necessidades relativamente simples) tenho estado bem com o último até agora.

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