Ich habe ein Projekt in C#.NET durchgeführt, bei dem meine Datenbankdatei eine Excel-Arbeitsmappe ist. Da der Speicherort der Verbindungszeichenfolge in meinem Code fest kodiert ist, gibt es kein Problem bei der Installation in meinem System, aber bei anderen Systemen schon.
Gibt es eine Möglichkeit, den Benutzer aufzufordern, einmalig einen Pfad festzulegen, nachdem das Setup der Anwendung abgeschlossen ist?
Die Antworten, die ich bekam, lauteten "Use App.Config"... kann mir jemand sagen, was diese App.config ist und wie ich sie in meinem Kontext hier verwenden kann?
In ihrer einfachsten Form ist die app.config eine XML-Datei mit vielen vordefinierten Konfigurationsabschnitten und Unterstützung für benutzerdefinierte Konfigurationsabschnitte. Ein "Konfigurationsabschnitt" ist ein XML-Schnipsel mit einem Schema, das dazu dient, eine Art von Informationen zu speichern.
Einstellungen können mit Hilfe von eingebauten Konfigurationsabschnitten wie connectionStrings
oder appSettings
konfiguriert werden. Sie können Ihre eigenen benutzerdefinierten Konfigurationsabschnitte hinzufügen; dies ist ein fortgeschrittenes Thema, aber sehr mächtig für die Erstellung von stark typisierten Konfigurationsdateien.
Webanwendungen haben typischerweise eine web.config, während Windows GUI/Dienstanwendungen eine app.config-Datei haben.
Konfigurationsdateien auf Anwendungsebene erben Einstellungen von globalen Konfigurationsdateien, z. B. der machine.config.
Verbindungsstrings haben ein vordefiniertes Schema, das Sie verwenden können. Beachten Sie, dass dieser kleine Ausschnitt eigentlich eine gültige app.config (oder web.config) Datei ist:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MyKey"
connectionString="Data Source=localhost;Initial Catalog=ABC;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
Sobald Sie Ihre app.config definiert haben, können Sie sie mit der Klasse ConfigurationManager im Code lesen. Lassen Sie sich nicht von den ausführlichen MSDN-Beispielen einschüchtern; es ist eigentlich ganz einfach.
string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;
Häufiges Ändern der *.config-Dateien ist normalerweise keine gute Idee, aber es klingt, als ob Sie nur eine einmalige Einrichtung vornehmen wollen.
Siehe: https://stackoverflow.com/q/502411/453277, wo beschrieben wird, wie man den Abschnitt connectionStrings
der *.config-Datei zur Laufzeit aktualisiert.
Beachten Sie, dass Sie solche Konfigurationsänderungen idealerweise von einem einfachen Installationsprogramm aus vornehmen würden.
*Q: Angenommen, ich ändere manuell einige Werte in app.config, speichere sie und schließe sie dann. Wenn ich nun in meinen bin-Ordner gehe und die .exe-Datei von hier aus starte, warum zeigt sie die vorgenommenen Änderungen nicht an?
A: Wenn Sie eine Anwendung kompilieren, wird ihre app.config in das Verzeichnis bin1 mit einem Namen kopiert, der zu Ihrer exe passt. Wenn Ihre Exe zum Beispiel "test.exe" heißt, sollte in Ihrem bin-Verzeichnis eine "text.exe.config" vorhanden sein. Sie können die Konfiguration ohne Neukompilierung ändern, aber Sie müssen die Konfigurationsdatei bearbeiten, die zur Kompilierungszeit erstellt wurde, nicht die ursprüngliche app.config.
1: Beachten Sie, dass web.config-Dateien nicht verschoben werden, sondern zur Kompilier- und Bereitstellungszeit am selben Ort verbleiben. Eine Ausnahme hiervon ist, wenn eine web.config transformiert.
Mit .NET Core wurden neue Konfigurationsoptionen eingeführt. Die Art und Weise, wie *.config-Dateien funktionieren, scheint sich nicht geändert zu haben, aber es steht Entwicklern frei, neue, flexiblere Konfigurationsparadigmen zu wählen.
App.Config ist eine XML-Datei, die als Konfigurationsdatei für Ihre Anwendung verwendet wird. Mit anderen Worten: Sie speichern darin alle Einstellungen, die Sie ändern möchten, ohne den Code ändern (und neu kompilieren) zu müssen. Sie wird häufig zum Speichern von Verbindungszeichenfolgen verwendet.
Siehe diesen MSDN-Artikel, wie man das macht.
Sie können auf die Schlüssel in der App.Config mit zugreifen:
ConfigurationSettings.AppSettings["KeyName"]
Schauen Sie sich diesen Thread an