2016-02-22 13 views
11

Ho un file principale Web.config, e sotto che c'è una Web.Test.config, Web.Development.Config eccWeb.config non viene trasformato quando il debug di codice

Quando l'anteprima della trasformazione tramite SlowCheetah sulla configurazione di prova, appare di trasformare i valori correttamente.

Quando passo l'ambiente di sviluppo dallo sviluppo al test e provo a eseguire il debug dell'applicazione, l'applicazione viene eseguita con qualsiasi valore nel file principale Web.config (ovvero non sta trasformando nulla).

Come faccio a fare in modo che l'ambiente di generazione scelga la configurazione corretta durante il debug piuttosto che utilizzare sempre il file base Web.config? È possibile?

risposta

23

È possibile trasformare Web.config in fase di compilazione. Aggiungere questo obiettivo a *.csproj di file:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" /> 
<Target Name="BeforeBuild"> 
    <TransformXml 
     Source="Web.Base.config" 
     Transform="Web.$(Configuration).config" 
     Destination="Web.config" /> 
</Target> 

mantenere la configurazione origine Web.Base.config. È sufficiente abilitare la trasformazione e funziona per qualsiasi file di configurazione XML. SlowCheetah non è più necessario.

http://sebnilsson.com/a5410281/asp-net-transform-web-config-with-debug-release-on-build/

+0

Questa è la soluzione più semplice, l'ho fatto e funziona benissimo. Ma ... c'è sempre un ma ... Ricevo sempre l'errore "Debugging Not Enable" quando è abilitato su Web.Base.config ma il mio Web.config è vuoto alla prima volta. Selezionando "Modifica il file Web.config per abilitare il debug" e facendo clic su OK, continua a funzionare correttamente. Se Web.config ha l'ultima versione di esecuzione con debug abilitato, funziona correttamente. Sembra che l'abilitazione del debug sia verificata prima della trasformazione. –

+0

Questa soluzione funziona correttamente. Ma un altro inconveniente è che qualsiasi cosa che Visual Studio/NuGet/etc. le modifiche nel file 'web.config', devono essere portate manualmente nel file' Web.Base.config'. –

4

Le trasformazioni XML verranno applicate solo quando si pubblicano app Web e non durante la compilazione.

Questo blog post spiega come aggirare le impostazioni di compilazione.

+1

ho unito la soluzione di cui sopra 'Obiettivo BeforeBuild' e questo. Facendo uso di ' Web.Base.config'. Grazie! – mike123

+0

@ mike123 - Potresti fornire una spiegazione più dettagliata di come è? Sembra interessante. Sono riuscito a farlo funzionare con SlowCheetah usando il loro pacchetto nuget per i file web.config. – arviman

+1

@arviman il file csproj necessitava di modifiche in due punti '... \t web.config \t \t ... ' – mike123

Problemi correlati