Ich habe ein relativ großes .Net-System, das aus einer Anzahl verschiedener Anwendungen besteht. Statt viele verschiedene app.config-Dateien zu haben, möchte ich eine einzige Konfigurationsdatei für alle Apps freigeben.
Ich möchte auch eine Version bei der Entwicklung auf meiner Maschine haben, eine Version für jemand anderen, der auf ihrer Maschine entwickelt, eine Version für ein Testsystem und eine Version für ein Live-System.
Gibt es eine einfache Möglichkeit, dies zu tun?
Für große Konfigurationsmengen, die von mehreren Anwendungen benötigt werden, würde ich diese Konfiguration in ein zentrales Repository z. eine Datenbank, Datei an einem gemeinsamen Ort.
Um verschiedene Versionen einer Konfigurationsdatei für verschiedene Umgebungen zu verwenden, erstellen Sie eine Buildkonfiguration für jede der verschiedenen Umgebungen und eine Konfigurationsdatei, die nach der Umgebung benannt ist, z. B .:
production production.app.config Testen Sie test.app.config
Sie können dann ein Pre-Build-Ereignis verwenden, um die korrekte Konfiguration über die Standard-app.config in Ihrem Projekt zu kopieren. Dies wird dann wie gewohnt in Ihr Ausgabeverzeichnis kopiert.
Das Pre-Build-Ereignis würde dem obigen ähnlich sehen, verwenden Sie einfach $ (Configuration), um die entsprechende Datei für die gewünschte Umgebung zu erhalten.
Sie können dies mit dem obigen kombinieren, um die gesamten Build-spezifischen Konfigurationsdateien in jedes Projekt zu kopieren.
Sie können ein Post-build-Ereignis (Eigenschaften - & gt; Build-Ereignisse) für Ihre "untergeordneten" Projekte verwenden, um eine Konfigurationsdatei von einem Hauptprojekt auf andere zu kopieren, beispielsweise:
%Vor%(Der "exit 0" als letzte Zeile verhindert einen Build-Fehler).
Um separate Konfigurationsdateien für verschiedene Build-Ziele ("RELEASE", "DEBUG" usw.) zu haben, können Sie die .csproj-Datei (oder .vbproj) in NOTEPAD.EXE bearbeiten, um für jedes Ziel ein AppConfig-Tag hinzuzufügen Gruppen, so:
%Vor%Beachten Sie die neuen & lt; AppConfig & gt; -Tags in jeder Gruppe.
Anstatt <add>
-Elemente zu Ihrem <appSettings>
-Abschnitt Ihrer Konfigurationsdatei hinzuzufügen, können Sie dem file=
-Element ein <appSettings>
-Attribut hinzufügen, um es anzuweisen, diese Daten aus einer anderen Datei zu laden. Sie könnten dann Ihre allgemeinen Einstellungen in dieser gemeinsamen Datei behalten.
Siehe appSettings-Element (Schema für allgemeine Einstellungen) in der MSDN Library.
Es ist möglich NTFS symbolische Links zu verwenden, um eine .NET .config Datei freizugeben. Ich habe gesehen, dass dies erfolgreich in einer Lösung verwendet wurde, die aus einer ASP.NET-Anwendung, Konsolenanwendungen und mehr besteht.
Tags und Links .net c# app-config