Verwalten Sie mehrere App-Konfigurationsdateien während der Entwicklung

8

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:

  1. Gehe zum Dateisystem in meinem Projektverzeichnis und lösche app.config
  2. Kopieren Sie app.config.foo in app.config.foo - Copy .
  3. Benennen Sie app.config.foo - Copy als app.config .
  4. um
  5. Sagen Sie Windows, dass ja, ich möchte die Dateierweiterung ändern.
  6. Wechseln Sie zurück zu Visual Studio.
  7. Öffnen Sie den Artikel Settings.settings in meinem Projekt.
  8. Klicken Sie 13 oder 14 Mal auf "Ja", wenn VS mich fragt, ob ich die neuen Einstellungen verwenden möchte, die in app.config geändert wurden.
  9. Schließen Sie 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?

    
Robert Rossney 06.10.2008, 20:29
quelle

6 Antworten

2

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.

    
Robert Rossney 03.09.2009, 06:14
quelle
6

Sie können Visual Studio auch Robert's Ansatz automatisieren lassen:

  1. Definieren Sie eine Build-Konfiguration für jeden Client
  2. Im Postbuildereignis einfach xcopy app.config.xxx in den bin-Ordner kopieren. Wobei XXX der Name einer Build-Konfiguration ist, auf die in VS zugegriffen werden kann. Etwas wie: xcopy app.config. $ (Konfigurationsname) $ (OutDir) /app.config

VS wird einen separaten Build für Ihre Clients in separaten Ordnern ablegen, zusammen mit der richtigen Konfigurationsdatei. bin / Kunde1 / bin / Client2 /

    
magravelle 22.08.2010 14:23
quelle
3

Sie können diesen Post für einige bewährte Vorgehensweisen verweisen: Verwalten mehrerer Konfigurationsdateiumgebungen mit vordefinierten Ereignissen

    
Gulzar Nazim 06.10.2008 20:30
quelle
3

Ich habe über das Chaos beim Verwalten mehrerer Konfigurationsdateien nachgedacht: Ссылка

Sein Zweck ist genau, um es einfacher zu machen, mehrere configuration files auf automatisierte Weise zu verwalten. Ich würde mich sehr freuen, wenn Sie es sich ansehen würden.

    
Rafael 15.04.2011 12:03
quelle
0

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

    
icelava 11.05.2009 02:04
quelle
0

Nachdem ich ein bisschen gegraben und gearbeitet habe, habe ich mein Testprojekt mit mehreren Konfigurationen arbeiten lassen,

  1. Erstellen Sie im Configuration Manager die benötigten Konfigurationen
  2. Kopieren Sie Ihre app.config und fügen Sie den Namen der Konfiguration, in meinem Fall ist AHI, FIV, MGC, so dass meine Konfigurationsdateien aussehen: App.AHI.config, App.MGC.config, App.FIV. Konfig. Sie können es benennen, wie immer Sie wollten, aber behalten Sie die gleiche Konvention
  3. Fügen Sie ein Post-Build-Ereignis hinzu. In meinem Fall würde es so aussehen: xcopy $ (ProjectDir) app. $ (Konfigurationsname) .config $ (TargetDir) $ (TargetName) .dll.config / y

Hier ist mein Beitrag, so dass Sie es mit mehr Details lesen können

Ausführen eines Testprojekts mit mehreren Konfigurationen

    
Sebastian Castaldi 18.02.2016 22:10
quelle

Tags und Links