Verwenden Sie das SlowCheetah- Plugin. Weitere Optionen und Details zur Verwendung von SlowCheetah finden Sie weiter.
Wie Sie bereits bemerkt haben, gibt es keine standardmäßige und einfache Möglichkeit, verschiedene Konfigurationsdateien für ein Projekt vom Typ Bibliothekstyp (DLL) zu verwenden. Der Grund ist, dass das aktuelle Denken ist: "Sie müssen nicht"! Framework-Entwickler gehen davon aus, dass Sie eine Konfiguration für die ausführbare Datei benötigen: eine Konsole, einen Desktop, ein Web, eine mobile App oder etwas anderes. Wenn Sie anfangen, die Konfiguration für eine DLL bereitzustellen , erhalten Sie möglicherweise etwas, das ich als Konfigurationshölle bezeichnen kann . Möglicherweise verstehen Sie nicht mehr (leicht), warum diese und jene Variablen so seltsame Werte haben, die scheinbar aus dem Nichts kommen.
"Warte", - du kannst sagen, "aber ich brauche das für meine Integration / Unit-Tests, und es ist eine Bibliothek!". Und das ist wahr und das können Sie tun (nur eine auswählen, nicht mischen):
1. SlowCheetah - transformiert die aktuelle Konfigurationsdatei
Sie können SlowCheetah installieren - ein Visual Studio-Plug-In, das alle XML-Stöße (oder Transformationen) auf niedriger Ebene für Sie ausführt . So funktioniert es kurz:
- Installieren Sie SlowCheetah und starten Sie Visual Studio neu (Visual Studio> Extras> Erweiterungen und Updates ...> Online> Visual Studio-Galerie> Suche nach "Slow Cheetah")
- Definieren Sie Ihre Lösungskonfigurationen ( Debug und Release sind standardmäßig vorhanden), Sie können weitere hinzufügen (Rechtsklick auf die Lösung in Projektmappen-Explorer > Konfigurationsmanager ... > Aktive Lösungskonfiguration > Neu ...
- Fügen Sie bei Bedarf eine Konfigurationsdatei hinzu
- Klicken Sie mit der rechten Maustaste auf Konfigurationsdatei> Transformation hinzufügen
- Dadurch werden Transformationsdateien erstellt - eine pro Ihrer Konfiguration
- Transformationsdateien funktionieren als Injektoren / Mutatoren. Sie finden den erforderlichen XML-Code in der ursprünglichen Konfigurationsdatei und fügen neue Zeilen ein oder mutieren den erforderlichen Wert, unabhängig davon, was Sie dazu auffordern
2. Spielen Sie mit der .proj-Datei - kopieren Sie eine ganz neue Konfigurationsdatei durch Kopieren um
Ursprünglich von hier genommen . Es ist eine benutzerdefinierte MSBuild-Aufgabe, die Sie in die Visual Studio- PROJ- Datei einbetten können . Kopieren Sie den folgenden Code und fügen Sie ihn in die Projektdatei ein
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config"
DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
Erstellen Sie nun im Projekt einen Ordner mit dem Namen Config
und fügen Sie dort neue Dateien hinzu: App.Debug.config , App.Release.config usw. Abhängig von Ihrer Konfiguration wählt Visual Studio nun die Konfigurationsdatei aus einem Config
Ordner aus und benennt sie in das Ausgabeverzeichnis um. Wenn Sie also das PatternPA.Test.Integration- Projekt und eine Debug- Konfiguration ausgewählt haben, finden Sie im Ausgabeordner nach dem Build eine PatternPA.Test.Integration.dll.config- Datei, die kopiert Config\App.Debug.config
und anschließend umbenannt wurde.
Dies sind einige Hinweise, die Sie in den Konfigurationsdateien hinterlassen können
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- This file is copied and renamed by the 'AfterBuild' MSBuild task -->
<!-- Depending on the configuration the content of projectName.dll.config
is fully substituted by the correspondent to build configuration file
from the 'Config' directory. -->
</configuration>
In Visual Studio können Sie so etwas haben
3. Verwenden Sie Skriptdateien außerhalb von Visual Studio
Jedes Build-Tool (wie NAnt , MSBuild ) bietet Funktionen zum Transformieren von Konfigurationsdateien in Abhängigkeit von der Konfiguration. Dies ist nützlich, wenn Sie Ihre Lösung auf einer Build-Maschine erstellen, auf der Sie mehr Kontrolle darüber haben müssen, was und wie Sie das Produkt für die Veröffentlichung vorbereiten.
Beispielsweise können Sie die Aufgabe der Web Publishing-DLL verwenden, um eine beliebige Konfigurationsdatei zu transformieren
<UsingTask AssemblyFile="..\tools\build\Microsoft.Web.Publishing.Tasks.dll"
TaskName="TransformXml"/>
<PropertyGroup>
<!-- Path to input config file -->
<TransformInputFile>path to app.config</TransformInputFile>
<!-- Path to the transformation file -->
<TransformFile>path to app.$(Configuration).config</TransformFile>
<!-- Path to outptu web config file -->
<TransformOutputFile>path to output project.dll.config</TransformOutputFile>
</PropertyGroup>
<Target Name="transform">
<TransformXml Source="$(TransformInputFile)"
Transform="$(TransformFile)"
Destination="$(TransformOutputFile)" />
</Target>