Pregunta

Posibles Duplicados:
NAnt o MSBuild, qué elegir, y cuando?

¿Cuál es la mejor herramienta para construir .NET?

Yo actualmente uso NAnt pero sólo porque tengo la experiencia con Ant.Es MSBuild preferido?

¿Fue útil?

Solución

Utilizamos una combinación de NAnt y MSBuild con CruiseControl.NAnt es utilizado para la secuencia de comandos de control de flujo y llamadas de MSBuild para compilar proyectos.Después de la física construir se activa, NAnt es utilizado para publicar los proyectos individuales construir salidas a una ubicación compartida.

No estoy seguro de que este es la mejor proceso.Creo que muchos de nosotros todavía están buscando una gran herramienta de construcción.Una de las prometedoras cosa que he escuchado recientemente .NETO de las Rocas, episodio 362, es James Kovac del PSake, un sistema de generación se basa totalmente en PowerShell.Suena muy prometedor, ya que lo que se puede hacer con PowerShell es bastante ilimitada en la teoría.

Otros consejos

Me gustaría lanzar FinalBuilder en la mezcla.No es gratis, pero si usted está harto de la edición XML archivos y desea un poco más agradable (IMO) para trabajar en me gustaría darle una oportunidad.

He trabajado con todos ellos y siempre han ido de vuelta a FinalBuilder.

Hay otra nueva herramienta de construcción (una muy inteligente contenedor) llamado NUBuild.Es ligero, de código abierto y extremadamente fácil de configurar y proporciona casi sin tocar el mantenimiento.Me gusta mucho esta nueva herramienta, y lo hemos hecho en una herramienta estándar para nuestros acumulación continua y la integración de nuestros proyectos (tenemos alrededor de 400 proyectos en 75 de los desarrolladores).Probarlo.

http://nubuild.codeplex.com/

  • Fácil de usar interfaz de línea de comandos
  • Capacidad de llegar a todos .NET Marco versiones, es decir, 1.1, 2.0, 3.0 y 3.5
  • Es compatible con XML de configuración basada en
  • Soporta tanto el proyecto y archivo referencias
  • Genera automáticamente la "completa ordenó construir la lista" para un determinado proyecto – No hay toque de mantenimiento.
  • Capacidad para detectar y mostrar las dependencias circulares
  • Realizar en paralelo la acumulación de decide automáticamente que de la proyectos generado en la lista de construcción de puede ser construido de forma independiente.
  • Capacidad para manejar proxy asambleas
  • Proporciona una pista visual para la construcción proceso, por ejemplo, "% completado", "estado actual", etc.
  • Genera detallados de registro de ejecución de ambos en XML y formato de texto
  • Fácilmente integrado con CruiseControl.NET continua sistema de la integración
  • Puede utilizar un registro personalizado como XMLLogger cuando la orientación 2.0 + versión
  • Capacidad para analizar los registros de error
  • Capacidad para implementar construido asambleas la localización especificada usuario
  • Capacidad para sincronizar el código fuente con control de código fuente del sistema
  • Versión de la capacidad de gestión de

Yo uso MSBuild completo para la construcción.Aquí está mi genérica de MSBuild script que busca en el árbol .csproj archivos y construye ellos:

<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>

(Lo siento si es un poco densa.Markdown parece ser el desmantelamiento de las líneas en blanco.)

Es bastante simple, aunque una vez que usted entienda los conceptos y todas las dependencias se manejan automáticamente.Debo señalar que usamos Visual Studio archivos de proyecto, que tiene mucho de lógica integrada en ellos, pero este sistema permite a las personas construir de manera casi idéntica, tanto dentro del IDE de Visual Studio o en la línea de comandos y todavía le da la flexibilidad de agregar cosas a la canónica generación como la xUnit prueba a ver en la secuencia de comandos anterior.

El PropertyGroup es donde está toda la configuración que sucede y las cosas pueden ser personalizados, como la exclusión de determinados proyectos de la construcción o la adición de nuevos ensamblaje de pruebas de máscaras.

El ItemGroup es donde la lógica sucede que busca todos los .csproj archivos en el árbol.

Luego están los objetivos, que la mayoría de las personas familiarizadas con el hacer, nAnt o MSBuild debe ser capaz de seguir.Si usted llama el destino de la Compilación, se llama __Compilar, __Desplegar y __de la Prueba.La Limpieza de destino de las llamadas de MSBuild en todos los archivos de proyecto para que limpiaran sus directorios y, a continuación, el despliegue global directorio se elimina.La reconstrucción de las llamadas Limpia y luego Construir.

Rake y el atún blanco es una excelente combinación.El poder de Ruby, y no XML.

.NET de código Abierto de 5 .RED de Automatización con el Rastrillo y el atún blanco por Liam McLennan [Tekpub.com]

Estamos usando De rebote, un marco para el limpiador de scripts en C#.

Yo uso un software comercial, Generación Automática De Estudio para el propósito de construir.

Utilizamos MSBuild, porque empezamos con Visual Studio 2005 (ahora Visual Studio 2008), y de MSBuild ya estaba integrada en el SDK - hay menos mantenimiento en el servidor de compilación.Es un NAnt clon, realmente - ambas herramientas son infinitamente flexibles ya que permiten crear de generación personalizada de tareas en el código, y ambos tienen un conjunto digno de la comunidad construir tareas que ya han creado.

Utilizando una dinámica lenguaje de scripting como Python, BOO, Ruby, etc.para crear y mantener construir secuencias de comandos pueden ser una buena alternativa a XML basado en uno como NAnt.(Que tienden a ser más limpio a leer de XML.)

Yo he usado tanto y prefieren NAnt.Es realmente difícil para mí para decir que uno es "mejor" que el otro.

Esto depende también de la ¿ usted está construyendo.El MSBuild COSUDE Tarea de la biblioteca tiene un par de tareas especiales.Por ejemplo, para AD, BizTalk, etc.

Hay más de 300 tareas incluidas en esta biblioteca, incluyendo las tareas de:la creación de sitios web, creación de grupos de aplicaciones, la creación de ActiveDirectory los usuarios, la ejecución de FxCop, la configuración de los servidores virtuales, la creación de los archivos zip, la configuración de COM+, la creación de carpeta de recursos compartidos, de la instalación en la GAC, configurar SQL Server, la configuración de BizTalk 2004 y BizTalk 2006, etc.

He usado ambos MSBuild y NAnt, y me gusta mucho MSBuild, principalmente porque requiere mucho menos de configuración por defecto.Aunque usted puede complicar las cosas y de la carga de MSBuild hacia abajo con un montón de configuración de basura también, en su forma más simple, puede apuntar a una solución/archivo de proyecto y tienen que ir de la cual, la mayoría del tiempo, para la mayoría de los casos, es suficiente.

UppercuT utiliza NAnt para construir y es increíblemente fácil de usar Construir el Marco.

Automatizado Construye tan fácil como (1) nombre de la solución, (2) origen de la ruta de control, (3) nombre de la empresa para la mayoría de los proyectos!

http://projectuppercut.org/

Algunas buenas explicaciones aquí: UppercuT

Hablando en general, tengo la impresión de que NAnt ofrece más flexibilidad en comparación con MSBuild, mientras que (con mi relativamente simples necesidades) he estado bien con el último hasta el momento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top