Domanda

Sto scrivendo un'app desktop che richiede un semplice livello di persistenza: ho scoperto SubSonic ed è in grado di funzionare con SQLite. Tuttavia, devo conservare il file di database nella cartella AppData dell'utente e non so come inserire tale valore in app.config: non voglio usare percorsi assoluti.

App.config può in qualche modo accedere alle variabili ambientali o alla cartella dei dati dell'applicazione di riferimento?

È stato utile?

Soluzione

Non è possibile specificare la cartella AppData in app.config per una stringa di connessioni.

Ma quello che potresti fare è scrivere il valore nel file di configurazione durante l'installazione o al primo avvio dell'applicazione.

Altri suggerimenti

Per subsonic v2.x ignoro la stringa di connessione app.config e la imposto in fase di esecuzione prima di lavorare con il database. Il nome del fornitore rimane lo stesso ovviamente.

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);

Il modo "framework" " di trovare appdata è usare Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)

Questo troverà il percorso appdata corretto indipendentemente dalla piattaforma.

Esistono diversi modi se si utilizza ASP.NET, in entrambe le lingue

Server.MapPath (" ~ ") restituirà la radice dell'applicazione come nome percorso completo, quindi puoi semplicemente aggiungere " / app_data " ad esso per ottenere il percorso completo.

In alternativa, controlla HttpContext.Current.Request e HttpContext.Current.Application ci sono numerose (e molto meglio di quella che ho appena menzionato) che ti forniranno la stessa cartella - essendo la radice dell'applicazione come percorso completo.

Nota che dovrebbero funzionare tutti anche se hai l'applicazione come cartella virtuale e una cartella normale con un'applicazione si configura in IIS su quella cartella

Tuttavia, questo è possibile solo in fase di esecuzione, quindi non può essere menzionato in app.config. puoi provare a utilizzare percorsi relaltivi da cui risiede l'app.config IE " ../ App_Data " o " / App_data " ma non sono sicuro dei tuoi esatti requisiti.

Buona fortuna

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top