Dot-Net

App.config 連接字元串相對路徑

  • February 15, 2011

我需要在 app.config 中設置 sqlite 連接字元串。我想設置相對於調試/發布文件夾的路徑,數據庫文件將被複製到這些文件夾。

<add name="EmailsSQLite" connectionString="data source=c:\Users\Test\Documents\Visual Studio 2008\Projects\TestConsole\Emails\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>

我想要類似的東西:

<add name="EmailsSQLite" connectionString="data source=\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>

那可能嗎?

您可以按照 Lefty 的回答中所述指定相對路徑。

然而,這將是相對於目前工作目錄的,它不一定是包含您的執行檔的目錄。

一種解決方法是在使用之前修改連接字元串,例如

在 app.config 中:

connectionString="data source={AppDir}\data\EmailDatabase.sqlite

在您的程式碼中:

ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name];    
if (c == null)
{
   ... handle missing connection string ...
}
string fixedConnectionString = c.ConnectionString.Replace("{AppDir}", AppDomain.CurrentDomain.BaseDirectory);
... use fixedConnectionString

引用自:https://stackoverflow.com/questions/5001980