visual-studio-2010 - please - visual studio code
¿Cómo puedo usar Web.debug.config en el servidor de depurador visual studio incorporado? (7)
¿Cómo puedo fusionar y hacer uso de Web.debug.config
en Visual Studio 2010 depurador incorporado?
@ologesa: su solución necesita acceso de escritura al Web.config original (debe salir en TFS). La mejor solución es generar directamente el Web.config en la carpeta bin como lo hace keitn. Cuando combinamos keitn''s y su solución obtenemos este:
<Target Name="BeforeBuild">
<Message Text="Transforming Web.config from Web.$(Configuration).config" Importance="high" />
<MakeDir Directories="bin" Condition="!Exists(''bin'')" />
<TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="bin/$(TargetFileName).config" StackTrace="true" />
</Target>
Después de leer muchas publicaciones similares y tener problemas con los archivos que no se pueden sobrescribir o que no se puede acceder a web.config porque es de solo lectura, esto es lo que conseguí trabajando para mí:
<Target Name="BeforeBuild" Condition="$(Configuration) == ''MyAltDebugConfiguration''">
<ItemGroup>
<OriginalWebConfig Include="$(ProjectDir)Web.config"/>
<TempWebConfig Include="$(ProjectDir)TempWeb.config"/>
</ItemGroup>
<Exec Command=""$(DevEnvDir)tf.exe" checkout "$(ProjectDir)Web.config"" />
<Copy SourceFiles="@(OriginalWebConfig)" DestinationFiles="@(TempWebConfig)" />
<TransformXml Source="$(ProjectDir)TempWeb.config"
Transform="Web.$(Configuration).config"
Destination="Web.config" />
</Target>
Notas:
Esto se ejecuta como el objetivo BeforeBuild.
Solo quiero que se ejecute bajo cierta configuración (un entorno de depuración alternativo) y es por eso que tengo la condición. Al implementar a través de la implementación web, el objetivo de publicación se activa y no necesito que este objetivo se ejecute.
No quiero tener que recordar revisar web.config (solo para deshacerlo cuando haya terminado), así que verifico web.config antes de comenzar la transformación. Si no está utilizando TFS, puede eliminar esta línea.
Como VS (2010) / msbuild no quiere soltar el Source web.config, uso un archivo temporal (gracias a este artículo por la información: http://www.diaryofaninja.com/blog/2011/09/14/using-custom-webconfig-transformations-in-msbuild )
Intenté agregar un comando para eliminar TempWeb.config pero VS / msbuild no quiere soltarlo. Puedo vivir con eso ya que no se agrega a TFS.
Este es un error conocido. Esa característica se puede usar ahora solo como parte del proceso de implementación.
Voten por favor, si se topa con esto también, por lo que esto se solucionará lo antes posible.
Esto es bastante simple de hacer y, lo crea o no, parece que esta es la forma en que VS está diseñado para funcionar.
Agregue las siguientes líneas al pie de la letra justo antes de la etiqueta de cierre del "Proyecto" del archivo .csproj del proyecto que contiene web.config.
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)/Microsoft/VisualStudio/v$(VisualStudioVersion)/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>
Ponga las siguientes líneas textualmente en el evento posterior a la construcción en las propiedades del proyecto que contiene el archivo web.config. Haga esto para cada configuración de compilación para la que desee que se ejecuten las transformaciones.
"$(MSBUILDBINPATH)/msbuild" "$(ProjectPath)" /t:Transform /p:Configuration=$(ConfigurationName);Platform=AnyCPU
xcopy "$(ProjectDir)obj/$(ConfigurationName)/Web.Config" "$(ProjectDir)". /F /R /Y
Había resuelto esto de una manera más simple, al agregar esto al final del archivo .csproj, justo antes de la etiqueta. Esto es similar a la respuesta de Keitn, con la diferencia de que no usa un evento de compilación posterior.
<Target Name="BeforeBuild">
<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>
No quería actualizar el archivo web.config en mi proyecto, solo el que termina en la carpeta bin así que así es como lo hice.
Agregue lo siguiente al final de .csproj (justo antes de la etiqueta de proyecto de cierre final)
<Target Name="Transform">
<MakeDir Directories="bin" Condition="!Exists(''bin'')" />
<TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="bin/$(TargetFileName).config" StackTrace="true" />
</Target>
A continuación, agregue el siguiente paso de compilación posterior
"$(MSBUILDBINPATH)/msbuild" "$(ProjectPath)" /t:Transform /p:Configuration=$(ConfigurationName);Platform=AnyCPU
Esto significa que cuando construye una transformación se lleva a cabo desde la configuración de depuración / liberación al archivo WebsiteName.Config en el directorio de la bandeja de salida, sin interferir con el web.config principal en el proyecto.
Sé que esto es viejo, pero estoy enfrentando el mismo problema. Tenemos pruebas, etapas, configuraciones en vivo que reemplazan puntos finales, cadenas de conexión, etc. del Web.config predeterminado
Sin embargo, yo haría lo siguiente:
- Haga clic derecho en la configuración de transformación deseada (por ejemplo, Web.Live.config )
- Haga clic en "Transformación de vista previa"
- Copie todo de la derecha (así es como se ve el Web.config con la transformación)
- CTRL + A + CTRL + C
- Abra el archivo Web.config (predeterminado)
- Seleccione todo (CTRL + A) y péguelo (CTRL + V)
- correr
No se trata de muchos pasos y se hace bastante rápido cuando te acostumbras. Espero que esto ayude. :)