Pergunta

Eu estou escrevendo um aplicativo de desktop que precisa de uma camada de persistência simples - eu descobri sobre SubSonic e da capacidade de trabalho com SQLite. No entanto eu preciso para manter o arquivo de banco de dados na pasta AppData do usuário e não sabem como colocar esse valor em app.config - Eu não quero usar caminhos absolutos

.

Pode app.config alguma forma variáveis ??acesso enviroment ou pasta de dados do aplicativo de referência?

Foi útil?

Solução

Não há nenhuma maneira para especificar a pasta AppData no app.config para uma seqüência de conexões.

Mas o que você pode fazer é escrever o valor para o arquivo de configuração, quer durante a instalação ou quando o aplicativo é executado pela primeira vez.

Outras dicas

Para v2.x subsônico eu iria ignorar a seqüência de conexão app.config e apenas configurá-lo em tempo de execução antes de trabalhar com o banco de dados. estadias o nome do fornecedor do mesmo, é claro.

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

O "caminho-quadro" de encontrar appdata é usar Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)

Isto irá encontrar o caminho AppData correta, independentemente da plataforma.

Existem várias maneiras se você estiver usando ASP.NET, em qualquer idioma

Server.MapPath ( "~") irá retornar a raiz do aplicativo como um nome de caminho completo, em seguida, você pode simplesmente adicionar "/ app_data" a ele para começar estiver caminho completo.

Como alternativa inspecionar o HttpContext.Current.Request e HttpContext.Current.Application existem inúmeros (e muito melhor, então o que eu acabei de mencionar) propriedades que irão fornecer-lhe com a mesma pasta -. sendo a raiz da aplicação como s caminho completo

Note que estes devem trabalhar mesmo se você tiver o aplicativo como uma pasta virtual e uma pasta regular com uma configura aplicativos no IIS em que pasta

No entanto, isto só é possível em tempo de execução, de modo que não pode realmente ser mencionado no app. você pode tentar usar caminhos relaltive de onde o app.config é residente IE "../App_Data" ou '/ App_Data', mas não tenho certeza de que você está necessidades exatas.

Boa sorte

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top