2010-06-07 19 views
11

Estoy trabajando en un proyecto ASP.NET en Visual Studio .NET 2010 y tratando de crear un instalador MSI utilizando un proyecto de configuración web. Agregué la salida primaria del proyecto (que parece extraer las dependencias relevantes) y los archivos de contenido del proyecto (que extrae los archivos .config y .svc).La transformación ASP.NET Web.config no funcionará en el instalador

El problema es que en lugar de aplicar la transformación XDT y crear Web.config con Web.Release.config, simplemente copia Web.config, Web.Release.config y Web.Debug.config en el instalador sin hacer ninguna transformación en absoluto.

¿Cómo hago para aplicar la transformación Web.config antes de crear el instalador?

Respuesta

1

La respuesta terminó siendo ubicado en otro SO cargo que echaba de menos cuando yo estaba buscando a través antes de pedir porque no era exactamente lo que quería:

MSBuild Script and VS2010 publish apply Web.config Transform

Un compañero de trabajo sugirió que el uso colocar el Web.config transformado en el directorio bin del proyecto y un proyecto de configuración web configurado para extraer el archivo .config del directorio bin y colocarlo en el instalador. Esta terminó siendo la solución más viable sin instalar complementos en Visual Studio.

0

Tiene que hacer un proyecto de implementación (creo que esta es una descarga por separado), luego su proyecto de configuración web tomará la salida precompilada del proyecto de implementación a medida que ingresa. Una cosa buena es que puede hacer que cambie una sección de su Web.config cuando se compila.

+1

Esta podría ser la respuesta; sin embargo, no tengo privilegios de administrador (ya que es una computadora de trabajo) así que no puedo probarlo para estar seguro. \ Terminé agregando una entrada al archivo .csproj para realizar la transformación - Lo haré publicar los detalles pronto –

17

encontré una workaround que funciona para mí:

  1. crear configuraciones necesarias (Dev, QA, producción, etc.) y las transformaciones de configuración web asociados.

  2. Utilice Bloc de notas u otro editor de texto e incluir siguiente en su Web archivo de proyecto de aplicación (.csproj) antes de la etiqueta (cerca del final del archivo del proyecto):

    <Target Name="AfterBuild"> 
        <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="Web.Transformed.config" /> 
    </Target> 
    

    No incluya Web.Transformed .config en el proyecto de aplicación web: si lo hace, Visual Studio lo alertará sobre los cambios después de cada compilación, lo cual es bastante molesto.

  3. En el proyecto de configuración web: seleccione Archivos de contenido -> Excluir filtro y agregue Web.config (y todos los demás archivos de configuración Web. *. Que contengan reglas de transformación).

  4. En el proyecto de instalación Web: icono de selección del editor de sistema de archivos -> carpeta de aplicaciones web -> Agregar archivo y seleccione Web.Transformed.config en la raíz de la carpeta de proyecto de aplicación web.

  5. En la misma pantalla: haga clic derecho Web.Transformed.config y cambiarle el nombre a Web.config

Ahora usted es capaz de generar archivos .msi con la configuración seleccionada y el archivo raíz web.config es transformado! Tenga en cuenta que esto no afecta a los archivos web.config en las subcarpetas.

+0

Puedo confirmar que este método funciona. También se detalla al final de esta publicación: http://forums.asp.net/p/1596387/4050004.aspx –

+0

+1 ¡Ha sido un placer! –

+0

En el punto 2 está aconsejando no agregar Web.Transformed.config, pero en el punto 4 está solicitando agregar el archivo Web.Transformed.config. Ambos puntos se contradicen entre sí o me falta algo. ¿Alguien puede ayudarme a comprender los pasos en los detalles? –

Cuestiones relacionadas