Nov 09
(App).config XML Transformationen & Splitting
Transformationen
XML Transformationen auf der App.config ermöglichen unterschiedliche Ausprägungen für verschiedene Solution Configurations (z.B. Debug / Release).
Somit kann man z.B. in „Release“ andere Server ansteuern als in „Release-Productive“ oder andere Optionen verwenden, als in Debug, etc.
Wer bereits ASP .NET Web-Projekte umgesetzt hat, kennt das Verfahren möglicherweise. Denn für Web.config XML Transformationen bietet Visual Studio diese Funktionalität aus eigenen Bordmitteln (ohne Erweiterungen installieren zu müssen).
Die Funktionalität lässt sich aber per 3rd Party Plug-In SlowCheetah in Visual Studio nachrüsten. Damit sind dann auch Transformationen für alle .config Dateien in der Solution möglich.
Dazu muss man lediglich Rechtsklick auf eine Config-Datei ausführen und „Add Transformation“ auswählen. Dann werden Transformationsdateien für jede der Solution Configurations angelegt. Diese lassen sich anschließend mit Leben füllen, z.B. das Hinzufügen eines Zusatzknotens mittels xdt:Transform=“Insert“ oder aber das Abwandeln eines vorhandenen Eintrags per xdt:Transform=“Replace“ xdt:Locator=“Match(name)“. Einen kompletten Überblick über die Transformationsmöglichkeiten findet man hier.
Das Plugin bietet per Rechtsklick, Preview Transform auch die Möglichkeit, sofort zu testen, ob die Anpassungen so funktionieren, wie man sich das gedacht hat.
Splitting in externe Dateien
Hat man wiederkehrende Einträge in verschiedenen Config Dateien (z.B. verteilt auf unterschiedliche Projekte innerhalb einer Solution) gibt es auch die Möglichkeit Teile in andere Dateien herauszutrennen und gemeinsam wiederzuverwenden. Dies erfolgt mittels Anlegen einer Datei (z.B. myFile.config), die den zu inkludierenden Teil beinhaltet und durch Anlegen eines leeren Knotens unter Angabe einer ConfigSource. Also z.B. <loggingConfiguration configSource=“myFile.config“ />. Man sollte darauf achten, dass die Zusatzdatei z.B. per Copy to Output Directory: Copy if newer auch mit ausgeliefert wird. Siehe auch hier.
Sofern Test runs auf die Config-Dateien angewiesen sind, empfiehlt es sich die Zusatz-Config-Dateien auch per Test Settings, Deployment in die Liste der Additional files and directories to deploy aufzunehmen. Damit werden diese auch mit ins TestResults\*\Out Verzeichnis geschrieben.
Kombination beider Verfahren
Sowohl Transformationen, als auch Splitting lassen sich im Bedarfsfall miteinander kombinieren. Man sollte es jedoch m.E. überschaubar halten.