Question

Je souhaite que les transformations web.config fonctionnent localement, mais apparemment, les transformations ne se produisent que lors des déploiements.

Est-ce que quelqu'un connaît un moyen d'exécuter la cible msbuild "TransformWebConfig" sans qu'elle passe par le processus de "reconstruction" et également de spécifier et de sortir le répertoire où cracher le web.config transformé ?

MODIFIER:En utilisant la réponse de Sayed, j'ai créé un .bat fichier pour exécuter la tâche pour moi :

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"

le "Transformation.proj" est une copie de l'extrait de code de Sayed dans la réponse ci-dessous.Spécifiez simplement la source, la cible et la destination de la transformation.Le nouveau fichier, dans ce cas, le "web.config" transformé sera dans le répertoire "D:\Demo".Je le copie simplement pour écraser le web.config de mon projet et, enfin, je supprime le fichier généré dans le dossier "demo".

De plus, j'ai créé une macro pour exécuter ce fichier batch et effectuer la transformation pour moi :

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

Vous pouvez également ajouter un bouton sur votre barre d'outils pour exécuter ce lot et/ou attribuer une touche de raccourci à exécuter.

Était-ce utile?

La solution

si vous voulez transformer un fichier de configuration sans utiliser la publication Web Pipeline vous suffit d'utiliser la tâche TransformXML manuellement. J'ai écrit un billet de blog détaillé sur ce sujet à http://sedodream.com/2010/ 04/26 / ConfigTransformationsOutsideOfWebAppBuilds.aspx , mais voici les hautes lumières:

<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>

Ici, je transformerai manuellement le fichier app.config en utilisant le fichier de transform.xml et le fichier de destination est app.prod.config.

Une chose que vous avez mentionné était capable de faire la transformation sur place lors de l'exécution de l'application. La raison pour laquelle nous ne réalisons la transformation sur l'emballage / Publish est parce que si nous transformons web.config alors lui-même la prochaine fois que vous déboguer votre application web.config se transforme à nouveau. Ainsi, par exemple, si dans votre web.debug.config vous avez la transformation d'ajouter une valeur à config, tout est OK la première fois que vous ajoutez cela, mais la prochaine fois que votre course / debug votre application, il vous ajoute à nouveau. Il est donc préférable d'éviter cela.

Autres conseils

Si vous utilisez Visual Studio 2015, vous pouvez simplement faire un clic droit sur la transformation de l'environnement souhaité, et cliquer sur "Afficher l'aperçu"...Il générera ensuite la transformation, et vous pourrez la copier et la coller dans le fichier Web.config normal à des fins de débogage.Ne le commettez pas !

Si vous utilisez Visual Studio 2013, vous pouvez installer l'extension SlowCheetah - XML ​​Transforms

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top