Frage

Ich schreibe eine Desktop-Anwendung, die eine einfache Persistenz-Schicht braucht - ich SubSonic fand heraus, und es ist Fähigkeit, mit SQLite zu arbeiten. Allerdings muss ich in Benutzer-Ordner AppData die Datenbank-Datei halten und nicht wissen, wie ein solcher Wert in app.config zu setzen - ich weiß nicht absolute Pfade verwenden möchten

.

Kann irgendwie Zugriff auf Umgebungsvariablen oder Referenz Anwendungsdatenordner app.config?

War es hilfreich?

Lösung

Es gibt keine Möglichkeit, die AppData-Ordner in der app.config für Verbindungen String angeben.

Aber was Sie tun können, ist, den Wert in die Konfigurationsdatei schreiben entweder während der Installation oder wenn die Anwendung zum ersten Mal ausgeführt.

Andere Tipps

Für Unterschall v2.x würde ich die app.config Verbindungszeichenfolge ignorieren und es nur zur Laufzeit einstellen, bevor Sie mit der Datenbank arbeiten. Der Anbietername bleibt gleich natürlich.

string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"MyApplication\Northwind.db3");

DataService.Providers["Northwind"].DefaultConnectionString =
            String.Format(@"Data Source={0};Version=3;New=False;Connection Timeout=3", dbPath);

Die "Rahmen Art und Weise" appdata finden ist Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)

zu verwenden,

Damit wird den korrekten appdata Weg unabhängig von der Plattform finden.

Es gibt mehrere Möglichkeiten, wenn Sie ASP.NET verwenden, in beiden Sprachen

Server.MapPath ( „~“) wird die Wurzel der Anwendung als vollständige Pfadnamen zurückkehren, dann können Sie nur „/ App_Data“ hinzufügen, um es du bist vollständiger Pfad zu erhalten.

Alternativ prüfen die HttpContext.Current.Request und HttpContext.Current.Application gibt es zahlreiche (und viel besser als die eben erwähnten I) Eigenschaften, die Sie mit dem gleichen Ordner zur Verfügung stellt -. die Wurzel der Anwendung ist als vollständigen Pfad s

Beachten Sie, dass diese sollten alle arbeiten, auch wenn Sie die Anwendung als virtuelle Ordner und einen regulären Ordner mit einer Anwendung in IIS konfiguriert auf diesen Ordner haben

Dies ist jedoch nur möglich, zur Laufzeit, so kann es nicht wirklich in der app.config erwähnt werden. Sie versuchen, relaltive Pfade von wo aus der app.config ist resident IE „../App_Data“ oder ‚/ App_data‘ verwenden könnte, aber ich bin mir nicht sicher von Ihnen genauen Anforderungen sind.

Viel Glück

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top