Domanda

Voglio ottenere web.config trasformazioni lavoro a livello locale, ma a quanto pare le trasformazioni avvenire solo quando si fa distribuzioni.

Qualcuno sa di un modo per eseguire il target msbuild "TransformWebConfig" senza passare attraverso il "ricostruire" il processo e anche specificare e directory di output dove sputare il web.config trasformato?

Modifica : Usando la risposta di Sayed, ho creato un file .bat di fare eseguire il compito per me:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe "D:\Demo\Transformation.proj" /t:TransformWebConfig 

copy /Y  "D:\Demo\Web.config" "D:\MyProject\Web.config" 

del ""D:\Demo\Web.config"

il "Transformation.proj" è una copia del frammento di codice di Sayed nella risposta qui sotto. Basta specificare l'origine, di destinazione e di destinazione per la trasformazione. Il nuovo file, in questo caso, il trasformato "web.config" sarà nella "D: \ demo" directory. Sto semplicemente copiando sopra sovrascrivere web.config del mio progetto e, infine, eliminare il file generato nella cartella "demo".

Inoltre, ho creato una macro per eseguire questo file batch ed eseguire la tranformation per me:

Public Module DoTransform
    Sub RunTransformBatchFile()
        Try
          Process.Start("D:\Demo\RunTransform.bat")
        Catch ex As System.Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module

Si può anche aggiungere un pulsante sulla barra degli strumenti per eseguire questo batch e / o assegnare un tasto di scelta rapida per eseguire.

È stato utile?

Soluzione

se si vuole trasformare un file di configurazione senza utilizzare la Pubblicazione Web Pipeline poi basta utilizza l'attività Transformxml manualmente. Ho scritto un post sul blog dettagliate su questo a http://sedodream.com/2010/ 26/04 / ConfigTransformationsOutsideOfWebAppBuilds.aspx , ma qui ci sono le alte luci:

<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="TransformXml"
             AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

    <Target Name="Demo">
        <TransformXml Source="app.config"
                      Transform="Transform.xml"
                      Destination="app.prod.config"/>
    </Target>
</Project>

Qui trasformo manualmente il file utilizzando il file app.config transform.xml e il file di destinazione è app.prod.config.

Una cosa che lei ha citato era stato in grado di fare la trasformazione a livello locale quando si esegue l'applicazione. Il motivo per cui abbiamo solo ad effettuare la trasformazione su pacchetti / pubblichiamo perché se abbiamo trasformato web.config stesso, allora la prossima volta che il debug la vostra applicazione web.config si trasforma di nuovo. Così, per esempio, se nel vostro web.debug.config si ha la trasformazione di aggiungere un valore al di configurazione, tutto è OK la prima volta che si aggiunge che, ma poi la prossima volta che la corsa / il debug la vostra applicazione sarà ottenere aggiungere di nuovo. Quindi è meglio evitare questo.

Altri suggerimenti

Se si utilizza Visual Studio 2015, si può semplicemente fare clic destro sul trasformare l'ambiente desiderato, e fare clic su "Visualizza Anteprima" ... Sarà quindi generare la trasformazione, ed è possibile copiare e incollare che nel normale file web.config per il debug. Basta non commetterlo!

Se si utilizza Visual Studio 2013, è possibile installare lo SlowCheetah - estensione trasforma XML

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top