2011-07-05 11 views
9

Duplicar posible:
Use Visual Studio web.config transform for debugging¿Por qué mi aplicación web no usa Web.Debug.config en la ejecución de depuración?

que tiene una aplicación asp.net con tres transformaciones web.config.

enter image description here

estaba pensando cuando inicio de depuración en funcionamiento (F5 con el modo de depuración seleccionada) se aplicarán las transformaciones escritas en el Web.Debug.config .. Pero esto no funciona .. Web.config usado es el de "Base".

usted me dice: "La transformación no es correcto" .. pero son porque cuando hago un despliegue (clic derecho/publicar) con la liberación de depuración de configuración: enter image description here

El web.config rendido tener modificaciones! Entonces funciona, pero la ejecución de depuración está usando la base web.config ... ¿Hay algún lugar donde pueda configurar eso?

Respuesta

7

EDIT: Mucho más refinada enfoque se puede conocer en SO: Use Visual Studio web.config transform for debugging

me había comentado que yo también quisiera esta característica, pero no se había encontrado una manera de hacerlo todavía. Entonces decidió tener un Google rápido.

Una discusión here me ha llevado a una posible solución proporcionada por cmac3095:

yo no me meto con MSBUILD que gran parte pero mi solución fue añadir un objetivo de encargo a la XXX.Web. csproj que hizo de transformación y luego añadir una costumbre "post construir" evento al XXX.Web.csproj que invocó MSBUILD (para realizar la transformada) y un XCOPY para copiar el transformado web.config sobre el original . Un lado efecto es que, como lo hemos hecho TFS, que siempre contiene la última web.config que fue transformada que puede ser un poco usettling (sigue pensando uno de sus otros desarrolladores ha sobrescrito la configuración - el cual, en un sentido, tienen; -) .... pero, del curso , su configuración está en el web.xxxxxx.config que utiliza en la transformación . De acuerdo, suficiente explicación.
Esto es lo que hace: copiar y pegar esto en que XXXX.Web.csproj justo por encima de la " Target Name =" elemento comentado BeforeBuild" ...

<UsingTask TaskName="TransformXml" 
AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" 
/> <Target Name="Transform"> 
    <MakeDir Directories="obj\$(Configuration)" 
Condition="!Exists('obj\$(Configuration)')" 
/> 
    <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" 
Destination="obj\$(Configuration)\Web.config" 
StackTrace="true" /> </Target> 
<Target Name="AfterBuild"> 
</Target> 

Eso es todo . En la próxima construcción de su xxx.web.config, el puesto construir ejecutará el objetivo de generar la costumbre y web.config transformado. la XCOPY hará que la carpeta.

+0

Gracias por su respuesta ...Estaba pensando que será más simple. Como un menú de estudio visual ... ;-) – bAN

+0

En defensa de MS, hay muchos argumentos en contra para este proceso. Vi mención de que se incluye como una característica en una futura compilación de VS, pero no en una publicación oficial, así que no me cites. – Smudge202

Cuestiones relacionadas