Pregunta

Ejecuto una solución de sitio web ASP.NET con algunos otros proyectos.Sabía que los proyectos de MSBuild son capaces de hacer esto, pero ¿es la mejor manera?¿Son fáciles de crear?¿Es mejor nAnt, CruiseControl.NET o cualquier otra solución?

Cuando construyo el sitio (usando Proyectos de implementación web), ¿puedo automatizar parte de la compilación para que no copie ciertas carpetas del proyecto a la carpeta de lanzamiento?Por ejemplo, tengo carpetas con índices de búsqueda local, imágenes y otro contenido que forma parte de la carpeta, pero nunca los necesito ni los cargo cuando implemento el proyecto.

También estoy buscando este tipo de solución para incrementar automáticamente los números de compilación y versión.

¿Fue útil?

Solución

A continuación se muestra un ejemplo de un proyecto de implementación web que ejecuta un script de este tipo de tarea en el archivo .wdproj:

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

Esto le permitiría eliminar una carpeta.

(Sospecho que si no quisieras copiar la carpeta en absoluto, el archivo de solución sería el lugar para especificar eso, aunque no he tenido que usarlo).

Otros consejos

MaseBase, puedes utilizar Proyectos de implementación web para crear y empaquetar sitios web.Hacemos eso todo el tiempo para proyectos con un aspecto de aplicación web.Después de asignar un WDP a un sitio web, puede abrir el .wdproj archivo como archivo XML de texto sin formato.Al final hay una sección comentada de objetivos de MSBuild que representan la secuencia de eventos que se activan durante un proceso de compilación.

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

Puede descomentar los objetivos que desee (p. ej."AfterBuild") e inserte allí las tareas necesarias para llevar a cabo sus actividades repetidas posteriores a la compilación.

Puede configurar la propiedad Acción de compilación/Copiar al directorio de salida en archivos individuales (seleccione el archivo y presione F4 para abrir la ventana de propiedades) para controlar lo que les sucede durante la compilación, pero no para las carpetas.Esto probablemente podría automatizarse con una tarea (pre) de compilación si no desea hacerlo manualmente.

Alternativamente, puede excluir estas carpetas del proyecto (haga clic derecho y 'excluir del proyecto');seguirán ahí ("mostrar todos los archivos" en el explorador de soluciones), pero no se incluirán al crear el proyecto.

CruiseControl.NET resuelve un problema diferente (integración continua)...sin embargo, he tenido un gran éxito con NAnt específicamente para lo que estás pidiendo.Hay una curva de aprendizaje, pero una vez que lo domines te preguntarás cómo te las arreglaste sin él.

Además del consejo de @Fredrik sobre cómo configurar los elementos del proyecto en "Copiar al directorio de salida", también puede especificar una acción posterior a la compilación en las propiedades del proyecto en la pestaña Generar e incluir comandos CMD como copy.exe y move.exe.

Usamos FinalBuilder para automatizar un montón de tareas posteriores a la compilación y previas a la compilación.También hay una interfaz web para que pueda iniciar compilaciones (o enviar sitios web) iniciando sesión en el sitio web y haciendo clic en un botón.

http://www.finalbuilder.com/

¿No puedes editar el archivo MSBuild del proyecto de implementación web para que haga lo que quieres?

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