2010-12-29 5 views
0

Ich habe eine C# exe geschrieben, die auf einem Live-Webserver läuft, aber ich möchte es auf unserem Staging-Server testen können. Da der Staging-Server über verschiedene Datenbankeinstellungen (in der app.config) von meinem localhost verfügt, gibt es eine Möglichkeit, die Verbindungszeichenfolge außerhalb der app.config zu speichern, so dass ich leicht darauf zugreifen kann?Datenbankeinstellungen außerhalb von app.config speichern

Ist es auch möglich, die Datenbankverbindungszeichenfolge zu speichern und dann über die app.config-Datei darauf zuzugreifen? Das mag seltsam klingen, aber ich verwende eine DLL von einem CMS, der den Wert in der .config-Datei verwendet.

+0

Warum haben Sie nicht unterschiedliche app.config-Dateien für jede Umgebung? Das ist im Wesentlichen der Zweck einer Konfigurationsdatei, um die für diese Umgebung erforderlichen Einstellungen bereitzustellen. – David

Antwort

2

Sie können "externalisieren" jede .NET-Konfigurationsabschnitt in eine separate Datei, und verweisen Sie von app.config.

Also in Ihrem Fall würden Sie so etwas wie dies in app.config haben:

<connectionStrings configSource="connectionstrings.dev.config" /> 

und dann getrennten configs schaffen für z.B. DEV, TEST, PROD-Umgebungen mit unterschiedlichen Namen. Ihr Inhalt wäre:

<?xml version="1.0"?> 
<connectionStrings> 
    -- your connection string here, as normal 
</connectionStrings> 

Sie können jede beliebige Anzahl von diesen separaten Dateien, und das Schalten nur bedeutet eine einzige Zeile in der Haupt app.config Änderung der entsprechenden externen connectionstrings.ABC.config Datei zu verweisen.

+0

Ok, also habe ich meine app.config mit den Konfigurationseinstellungen auf eine andere Datei zeigen. Ist es möglich, die app.config auf jedem Computer zu ändern, auf dem ich sie ausführe, ohne die App für jede Maschine neu zu erstellen? –

4

Wie wäre es mit verschiedenen app.config an jedem Ort?

+0

Kann die app.config außerhalb der .exe gespeichert werden? Wenn ich mein Build (TFS) gemacht habe, scheint es kein app.config zu geben, wie es bei web.config der Fall ist. –

+2

Das ist, was ich normalerweise mache. Um Fehler zu vermeiden, sollten Sie beide Konfigurationsdateien in der Quellcodeverwaltung unter Verwendung anderer Namen und an einem anderen Speicherort als dem, den Sie bereitstellen, verwalten und so einrichten, dass das Bereitstellungsscript automatisch den richtigen Teil des Aktualisierungsprozesses installiert. – tdammers

0

Sie können es speichern, wo Sie wollen: Übergeben Sie es in einer Textdatei in einer Umgebungsvariablen als Befehlszeilenargument.

Sie müssen nur Code schreiben, um die Verbindungszeichenfolge zu lesen und an Ihren Datenzugriff zu übergeben.

Wenn Sie uns mitteilen, wie Sie auf Ihre Datenbank zugreifen, kann ich Ihnen zeigen, wie Sie die Verbindungszeichenfolge übergeben.

Aber vielleicht ist es besser, verschiedene Konfigurationsdateien pro Umgebung zu verwenden.

0

Das hängt davon ab, wie Sie es verwenden. Es ist nur eine Zeichenkette, also können Sie sie im Prinzip überall speichern. Wenn Sie jedoch eine Bibliothek verwenden, die erwartet, dass sich die Verbindungszeichenfolge in app.config befindet, müssen Sie eine andere Möglichkeit finden, die Zeichenkette an sie zu übergeben.

Die Datei app.config ist jedoch leicht zu erreichen. Es ist nur eine Textdatei im XML-Format, so dass Sie mit einem beliebigen Texteditor, wie zum Beispiel Notepad, bearbeiten können. Es heißt nicht app.config, sobald es jedoch bereitgestellt wird, erhält es seinen Dateinamen aus dem Namen der Anwendung mit der Erweiterung .config.

1

Erstellen Sie stattdessen Datenbankeinstellungen in app.config mit Präfixen wie DevConnectionString und ProdConnectionString. Erstellen Sie dann ein weiteres app.config Element, das Ihnen mitteilt, in welcher Umgebung Sie sich befinden.

Während der Entwicklung ist diese Umgebungseinstellung "Dev". Wenn Sie den Code bereitstellen, ändern Sie das Umgebungselement in app.config in "Prod".

Wenn Sie die Datenbankeinstellungen im Code abrufen möchten, untersuchen Sie zunächst den Umgebungswert und wählen dann die Datenbankeinstellungen entsprechend aus.

Eine Variation zu diesem Thema besteht darin, auf jedem Computer eine Umgebungsvariable in Windows zu erstellen und diese in Ihrem Code abzufragen.

0

Sie können Ihre eigene Konfiguration für Verbindungszeichenfolgen rollen, rufen Sie sie entsprechend der aktuellen Umgebung, z. dev.config, qa.config, prod.config usw. und behalten Sie ihren Namen in App.config.

Zusätzlich können Sie einen Datensatz zu Machine.config hinzufügen, z.

Machine.config:

<environment name="Dev" /> 

App Umwelt und halten es App.config beim Lesen Umwelt Config, um zu bestimmen, das heißt genannt.config:

<environments> 
    <environment name="Dev" config="dev.config" /> 
    <environment name="QA" config="qa.config" /> 
    ... 
</environments>