Wir verwenden ein System, das mehrere der auf dieser Seite vorhandenen Antworten kombiniert und auf diesen Vorschlag von Scott Hanselman zurückgreift .
Kurz gesagt, wir haben eine gemeinsame app.config / web.config und die meisten spezifischen Einstellungen in einzelnen Dateien, wie in anderen Antworten hier vorgeschlagen. zB für unsere SMTP-Einstellungen enthält die app.config
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
Diese Datei befindet sich in der Quellcodeverwaltung. Die einzelnen Dateien sind jedoch nicht wie folgt:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
Hier endet die Geschichte allerdings nicht ganz. Was ist mit neuen Entwicklern oder einer neuen Quellinstallation? Der Großteil der Konfiguration befindet sich nicht mehr in der Quellcodeverwaltung, und es ist schwierig, alle benötigten .config-Dateien manuell zu erstellen. Ich bevorzuge eine Quelle, die zumindest sofort kompiliert werden kann.
Aus diesem Grund behalten wir eine Version der .config-Dateien in der Quellcodeverwaltung mit dem Namen .config.default- Dateien. Ein frischer Quellbaum sieht also so aus:
Für den Entwickler jedoch nicht wirklich von Nutzen, da sie für Visual Studio nur bedeutungslose Textdateien sind. Daher copy_default_config.bat
kümmert sich die Batch-Datei darum, einen ersten Satz von .config-Dateien aus den .config.default-Dateien zu erstellen:
@echo off
@REM Makes copies of all .default files without the .default extension, only if it doesn't already exist. Does the same recursively through all child folders.
for /r %%f in (*.default) do (
if not exist "%%~pnf" (echo Copying %%~pnf.default to %%~pnf & copy "%%f" "%%~pnf" /y)
)
echo Done.
Das Skript kann sicher erneut ausgeführt werden, da Entwickler, die bereits über ihre .config-Dateien verfügen, diese nicht überschreiben lassen. Daher könnte man diese Batch-Datei möglicherweise als Pre-Build-Ereignis ausführen. Die Werte in den Standarddateien sind für eine Neuinstallation möglicherweise nicht genau korrekt, aber sie sind ein vernünftiger Ausgangspunkt.
Letztendlich hat jeder Entwickler einen Ordner mit Konfigurationsdateien, der ungefähr so aussieht:
Es mag ein wenig verworren erscheinen, aber es ist definitiv dem Ärger der Entwickler vorzuziehen, die sich gegenseitig auf die Zehen treten.