visual-studio - tutorial - visual studio code español
Ayuda con un solo paso crear todos los proyectos+instalador(.NET+WiX) (2)
Tengo eventos de preconstrucción en el instalador para reconstruir los proyectos con la configuración adecuada, etc.
Si hago clic derecho en construir / reconstruir en el proyecto de WiX (3.0) en Visual Studio todo se construye bien, pero si intento ejecutar MSBuild en el archivo wixproj, los eventos de precompilación arrojarán errores.
En su lugar, puedo llamar a Candle and Light en wixproj pero no ejecutará los eventos de preconstrucción.
Los eventos de preconstrucción dependen de las macros proporcionadas por VS y no estoy seguro de cómo solucionarlo, aparte de crear otro proyecto y, básicamente, utilizar el evento de preconstrucción del proyecto que solo grita piratear.
Otro problema es que necesito ingresar un número de versión autoactualizable en WiX desde la línea de comando.
Estaba planificando usar solo un csproj para manejar el número de versión y actualizarlo y simplemente realizar un bombardeo en MSBuild y Candle and Light, pero el problema es que no sé cómo acceder al directorio de la solución desde otro código que no sea el de codificación rígida. en
Encontramos que es más fácil usar una utilidad para editar el proyecto en sí y para vaciar todos los eventos de compilación previa y compilación antes de que lo construyamos con nuestro autoconstructor (en nuestro caso, VisualBuild ).
Esto nos deja con un proceso de compilación agradable y jugoso que no depende de ningún truco desagradable en el IDE y nos da un control total sobre de dónde viene la fuente y hacia dónde van los componentes incorporados.
Estoy usando una forma diferente que funciona bien para mí, que describí aquí .
- Mantengo el número de versión en un archivo por lotes , que simplemente lo escribe en una variable de entorno
- Creo mis compilaciones de lanzamiento ejecutando un archivo por lotes que primero llama al archivo por lotes "número de versión" (así que tengo el número de versión en una variable de entorno llamada
%VersionNumber%
) y luego ejecuta un archivo de proyecto MSBuild - El archivo del proyecto MSBuild crea la solución y obtengo el número de versión del archivo .exe en el archivo
.csproj
al leerlo de la variable de entorno, si existe (y luego utilizo MSBuild Community Tasks para crear un archivoAssemblyInfo
con el número de versión en un evento de construcción previa)
Esto significa que el .exe tiene la versión 0.0 cuando se crea desde Visual Studio, pero estoy de acuerdo con eso porque creo todas mis versiones del archivo por lotes. - Para crear una compilación de relases con la configuración de WiX, ejecuto otro archivo por lotes , que solo llama al archivo por lotes "build" mencionado anteriormente, y luego llama a las utilidades de WiX
candle
ylight
para construir la configuración real. -
candle
usa este archivo.wxs
para crear la configuración, donde nuevamente obtengo el número de versión de la variable de entorno:$(env.VersionNumber)
- el archivo
.msi
final creado porlight
incluye el número de versión en su nombre de archivo porque paso el nombre del archivo (incluida la variable de entorno con el número de versión) como argumento:-out release/msi/bitbucket-backup-%VersionNumber%.msi
Me tomó un tiempo entender todo esto al principio, pero ahora lanzo todos mis proyectos de manera similar.