Comunidad para aprender y compartir conocimientos en programación
[ Entrar ] - [ Registrarse ]
1
+  -
*
(0)

Como conseguir que Nant haga el build de mi setup project?

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


Editado: 24 febrero 2010
Foto
Fabián
8
21 julio 2009
Foto
Gonzalo
3
0
+  -

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

21 julio 2009
Foto
Gonzalo
3
0
+  -

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

22 julio 2009
Foto
Gonzalo
3
0
+  -

Gracias por compartir esto Gonzalo. Edite parte del código porque al hacer la conversión de la base de datos había quedado mal el formato.

25 julio 2009
Foto
Fabian
7

Tu Respuesta

o

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.

Mensaje

Cerrar ventana