Hola, En Visual Studio 2008 tengo una solucion C# con varios proyectos. Entre ellos, un servicio windows y un proyecto de "setup". Todo compila y funciona perfectamente. Cuando hago un build del proyecto de setup desde VS me genera un fichero msi con todo lo que necesito, etc... todo se instala bien y funciona. (Lo que "necesito" son varios custom actions y editores de configuraciones) Dentro de la solucion tengo otro proyecto "Build" que construye y despliega la aplicacion con Nant y CruiseControl. Dicho Nant script no tiene problemas a la hora de compilar y desplegar el servicio windows. Lo que no consigo es que, el mismo Nant script que utilizo para el servicio windows, me compile el proyecto de setup y me despliegue el .msi. He buscado alguna solucion por Google y StackOverflow pero todo lo que encuentro se refiere versiones 2003 o construyen el msi sin tener en cuenta mis "necesidades" (ver arriba). Cualquier ayuda o sugerencia es bienvenida. Ps.- Supongo que será culpa de mi teclado inglés pero cuando intento escrbir las tildes en las oes (AltGr+o) me crea una lista 1. List item . 1. List item 2. List item Gracias
La respuesta parece que será del tipo: Utiliza la tarea < exec > de Nant para pasar un comando al shell de tipo "devenv solutionFile.sln /build projectFile". Ahora sólo queda conseguir que funcione. :-D!!!!
Cualquier idea sigue siendo bienvenida.
Gracias
Y así es como me ha funcionado a mi:
<target name="buildInstaller">
<!-- Compilar el proyecto de setup con with DevEnv.exe -->
<property name="devenv.com.path"
value="C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE"/>
<property name="devenv.com.name" value="devenv.exe"/>
<exec basedir="${devenv.com.path}"
program="${devenv.com.name}"
commandline="${solutionfilepath} /build Release /project ${installerprojectpath}" />
<!-- Copiando el msi generado a la carpeta de despliegue -->
<echo message="copying .msi to output" />
<copy todir="${buildoutputpath}${installerproject}\">
<fileset basedir="${codedir}${installerproject}\Release">
<include name="**"/>
<exclude name="**.cs" />
<exclude name="**.csproj" />
<exclude name="**.user" />
</fileset>
</copy>
</target>
property name="devenv.com.path" -- debe apuntar a la máquina local (donde se encuentre devenv.exe)por lo que deberás tener instalado una copia de visual studio en el servidor. [no he probado a usar maquinas remotas para esto] Seguramente me podría haber ahorrado el uso de properties para definir los valores de basedir program:
<exec
basedir="C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE"
program="devenv.exe"
commandline="${solutionfilepath} /build Release /project ${installerprojectpath}" />
Espero que os resulte útil
Tu Respuesta
YoProgramo.NET es una comunidad para unir y ayudar a los programadores hispanos.
Aquí los desarrolladores pueden encontrar repuesta a sus dudas y colaborar con los demás, compartiendo sus conocimientos y experiencia.