2010-06-07 12 views
11

Sto lavorando a un progetto ASP.NET in Visual Studio .NET 2010 e sto tentando di creare un programma di installazione MSI utilizzando un progetto di installazione Web. Ho aggiunto l'output primario del progetto (che sembra estrapolare le dipendenze pertinenti) e i file di contenuto del progetto (che richiama i file Web.config e .svc).La trasformazione Web.config di ASP.NET non funzionerà nel programma di installazione

Il problema è che anziché applicare la trasformazione XDT e creare Web.config utilizzando Web.Release.config, copia solo Web.config, Web.Release.config e Web.Debug.config nell'installer senza alcuna trasformazione.

Come faccio a ottenere l'applicazione della trasformazione Web.config prima di creare il programma di installazione?

risposta

1

La risposta ha finito per essere situato su un altro SO posto che ho perso quando ero alla ricerca attraverso prima di chiedere perché non era esattamente quello che volevo:

MSBuild Script and VS2010 publish apply Web.config Transform

Un collega ha suggerito che utilizzando per posizionare il Web.config trasformato nella directory bin del progetto e un Progetto di installazione Web configurato per estrarre Web.config dalla directory bin e inserirlo nel programma di installazione. Questo finì per essere la soluzione più praticabile senza installare alcun componente aggiuntivo in Visual Studio.

0

È necessario creare un progetto di distribuzione (penso che si tratti di un download separato), quindi il progetto di installazione Web preleva l'output precompilato del progetto di distribuzione durante l'immissione. Una cosa bella è che puoi cambiare una sezione di Web.config al momento della creazione.

+1

Questa potrebbe essere la risposta; tuttavia, non ho i privilegi di amministratore (dato che si tratta di un computer di lavoro) quindi non posso verificarlo. \ Ho finito per aggiungere una voce nel file .csproj per eseguire la trasformazione - I'll pubblica presto i dettagli –

17

Ho trovato un workaround che funziona per me:

  1. creare configurazioni necessari (Dev, QA, produzione, ecc) e le trasformazioni web di configurazione associati.

  2. Utilizzare Blocco note o altro editor di testo e includono segue nel vostro web file di progetto di applicazione (.csproj file) prima di tag (vicino alla fine del file di progetto):

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

    Non includere Web.Transformed .config nel progetto di applicazione web - se lo studio visivo ti avviserà delle modifiche dopo ogni build che è piuttosto fastidioso.

  3. Nel progetto di installazione Web: selezionare File di contenuto -> Escludi filtro e aggiungi Web.config (e tutti gli altri file di configurazione Web. *. Contenenti le regole di trasformazione).

  4. Nel progetto di installazione Web: Selezionare l'icona del file editor di sistema -> cartella dell'applicazione web -> Aggiungi file selezionare Web.Transformed.config nella radice della cartella di progetto di applicazione web.

  5. Nella stessa schermata: tasto destro del mouse Web.Transformed.config e rinominarlo in Web.config

Ora si è in grado di generare file con configurazione selezionata e file web.config radice è MSI trasformato! Si prega di notare che questo non ha effetto sui file web.config nelle sottocartelle.

+0

Posso confermare che questo metodo funziona. È anche dettagliato alla fine di questo post: http://forums.asp.net/p/1596387/4050004.aspx –

+0

+1 Ha funzionato a meraviglia! –

+0

Nel punto 2 si consiglia di non aggiungere Web.Transformed.config ma al punto 4 si richiede di aggiungere il file Web.Transformed.config. Entrambi i punti si contraddicono o mi manca qualcosa. Qualcuno può aiutarmi a capire i passaggi nei dettagli. –

Problemi correlati