2013-04-25 8 views
7

Ich habe SlowCheetah in eine alte .Net 3.5 Webformularanwendung heruntergeladen, um Transformationen in web.config hinzuzufügen.Verwendung von SlowCheetah Config Transformationen in Web.config in einer 3.5 Web Forms App

Ich habe SlowCheetah mit Windows Services und Konsolenanwendungen verwendet, um app.config mit Erfolg in der Vergangenheit zu transformieren. In diesen Fällen wird die Konfiguration transformiert und in der Bin als ApplicationName.exe.config platziert.

Mit dieser Webformularanwendung endet die Konfigurationsdatei jedoch nie in der Bin, da Webformularwebsites nur mit DLLs erstellt werden, die in die Bin und IIS in das Stammverzeichnis zum Ausführen der Site fallen. Anstatt die web.config in den Build-Prozess aufzunehmen und in den Bin zu packen, bleibt sie einfach im Root-Verzeichnis.

Es werden keine Transformationen auf die Datei web.config im Stammverzeichnis angewendet, was eine gute Sache ist, da sich die Datei web.config im Stammverzeichnis in der Quellcodeverwaltung befindet und die Datei ist, auf der die Transformation ausgeführt wird.

Ich wäre glücklich mit der web.config in den Build aufgenommen werden, so dass SlowCheetah es transformiert und dann in den Papierkorb fallen lässt. Wir müssten es dann manuell aus dem Papierkorb nehmen und es in die Root-Ebene auf unseren Servern zurücklegen, aber es wäre es wert, die Transformationen zu haben.

Wer weiß, wie man die Transformationen gegen meine web.config ausführen oder in den Build-Prozess einbeziehen kann, so dass slowCheetah seine Magie wirken kann?

Danke!

aktualisieren

ich die Eigenschaften des web.config geändert, und es wird jetzt in den Build jedoch enthalten, werden die Transformationen noch nicht auf sie angewendet werden.

Build Action: Eingebettete Ressource

kopieren Output Regie: Immer kopieren

Antwort

5

Lösung

ich die Web.config in unserem Quellcodeverwaltung Web.template.config umbenannt und hinzugefügt transformiert Web.template.Debug.config und Web.template.Release.config

Als nächstes entladen Sie die Projektdatei und bearbeiten Sie die .csproj XML fügt die folgenden Elemente hinzu

Das erstellt eine neue Web.config-Datei in dem Stammverzeichnis. Woot!

<PropertyGroup> 
    <PrepareForRunDependsOn> 
    $(PrepareForRunDependsOn); 
    WebConfigTransform; 
    </PrepareForRunDependsOn> 
</PropertyGroup> 
<Target Name="WebConfigTransform"> 
    <Message Text="Configuration: $(Configuration): Web.template.$(Configuration).config" /> 
    <TransformXml Source="Web.template.config" 
       Transform="Web.template.$(Configuration).config" 
       Destination="Web.config" /> 
</Target> 
1

eine bessere Lösung gefunden - eine ohne Dateien zu .template.config zu umbenennen.

Fügen Sie Folgendes in Ihre Web Forms-CSProj-Datei ein.

<Target Name="BeforeBuild"> 
    <Delete Files="$(TEMP)\Web.TEMP.config" /> 
    <Copy SourceFiles="Web.config" DestinationFiles="$(TEMP)\Web.TEMP.config" /> 
    <TransformXml 
     Source="$(TEMP)\Web.TEMP.config" 
     Transform="Web.$(Configuration).config" 
     Destination="Web.config" /> 
    </Target> 
+0

Das Problem hier ist, dass Sie etwas von einer kreisförmigen Referenz erstellen. Angenommen, Sie haben eine Transformation, die Elemente einfügt. Bei der ersten Ausführung wird der Inhalt der Datei web.config genommen und neue Elemente eingefügt. Beim zweiten Ausführen der Transformation werden doppelte Elemente eingefügt. Denken Sie auch daran, wenn Sie Web.config in der Quellcodeverwaltung ist, möchten Sie es ständig ändern? – Michael

+0

Stimmen Sie dem zirkulären Problem zu. Wir verwenden zwar nur die "SetAttribute" -Transformation, so dass es für uns sehr gut funktioniert. –

+0

Die Verwendung von Web.config unter Quellcodeverwaltung ist für uns wichtig. Also die Lösung. Aber ich stimme zu, dass Ihre Lösung vorzuziehen ist. –

Verwandte Themen