Ich erstelle eine Anwendung, die von verschiedenen Kunden verwendet wird. Jeder Kunde hat eine Menge benutzerdefinierte Geschäftslogik, die ich geschickt in eine Assembly umstrukturiert habe, die zur Laufzeit geladen wird. Der Name dieser Assembly wird zusammen mit einer Reihe anderer kundenspezifischer Einstellungen in der Konfigurationsdatei der Anwendung gespeichert.
Hier ist jetzt, was ich tun muss, um die Anwendung für Kunden foo zu debuggen:
app.config
app.config.foo
in app.config.foo - Copy
. app.config.foo - Copy
als app.config
. Settings.settings
in meinem Projekt. app.config
geändert wurden. Settings.settings
. Okay! Jetzt bin ich bereit zu debuggen!
Es scheint mir, dass die Rigamarole beim Öffnen von Settings.settings
unnötig ist oder sein sollte: Ich brauche die Standardwerte in Settings.cs
nicht, um neu generiert zu werden, weil ich sie nicht verwende. Aber es ist die einzige Möglichkeit, die ich kenne, VS auf die Tatsache aufmerksam zu machen, dass sich die Datei app.config
geändert hat, so dass der Build sie in das Ausgabeverzeichnis kopiert.
Es muss einen einfacheren Weg geben, dies zu tun. Was ist das?
Einige Leute haben vorgeschlagen, mehrere VS-Konfigurationen zu verwenden, was meiner Meinung nach funktioniert hätte, außer dass ich jedes Mal, wenn ich zwischen den Konfigurationen wechsle, die Lösung neu aufbauen müsste.
Was ich getan habe, schien mir ein wenig dumm zu sein, aber ich benutze es jetzt seit fast einem Jahr und es funktioniert extrem reibungslos. In meinem Projekt erstelle ich direkt eine separate app.config.XXX
-Datei für jeden Kunden. Die tatsächliche app.config
-Datei wird ausschließlich zum Generieren von Settings.cs
verwendet - sie enthält alle korrekten Einstellungsnamen und ihre Standardwerte. Es wird niemals in die Build-Verzeichnisse kopiert.
Dann habe ich ein kleines Programm geschrieben, mit dem ich einen Kunden auswählen kann, der einfach die Verzeichnisse für jedes Projekt durchsucht und, wenn ich Kunde XXX ausgewählt habe, app.config.XXX
in bin\debug\myprogram.exe.config
und bin\release\myprogram.exe.config
kopiert. Solange dieses Programm weiß, wo die Wurzel der Lösung ist (ich muss ein wenig vorsichtig sein, wenn ich den Code verzweige), funktioniert es wie ein Zauber.
Sie können Visual Studio auch Robert's Ansatz automatisieren lassen:
VS wird einen separaten Build für Ihre Clients in separaten Ordnern ablegen, zusammen mit der richtigen Konfigurationsdatei. bin / Kunde1 / bin / Client2 /
Sie können diesen Post für einige bewährte Vorgehensweisen verweisen: Verwalten mehrerer Konfigurationsdateiumgebungen mit vordefinierten Ereignissen
Sie können mehrere Visual Studio-Lösungskonfigurationen definieren, eine für jeden Kunden und benutzerdefinierte MSBuild-Ziele für Ihr Windows-Anwendungsprojekt.
Ich habe die Schritte dokumentiert, wie ich das hier gehandhabt habe. Mehrere app.config-Dateien für die Bereitstellung in verschiedenen Umgebungen
Nachdem ich ein bisschen gegraben und gearbeitet habe, habe ich mein Testprojekt mit mehreren Konfigurationen arbeiten lassen,
Hier ist mein Beitrag, so dass Sie es mit mehr Details lesen können
Tags und Links .net c# visual-studio