Относительный путь строки подключения App.config
Мне нужно установить в 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"/>
Возможно ли это?
Ответы
Ответ 1
Вы можете указать относительный путь, как описано в левом.
Однако это будет относиться к текущему рабочему каталогу, который не обязательно будет каталогом, содержащим ваш исполняемый файл.
Один из способов: изменить строку подключения перед ее использованием, например
В 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
Ответ 2
Попробуйте использовать ".". перед первым обратным слэшем в части источника данных строки.
например.
data source=.\data\EmailDatabase.sqlite
Ответ 3
Да, это возможно. Попробуйте использовать | DataDirectory |.
В App.config
<add name="SqliteConnectionString" connectionString="Data Source=|DataDirectory|\Database.sqlite;" providerName="System.Data.SQLite"/>
Дополнительная информация на этой странице
https://msdn.microsoft.com/en-us/library/cc716756.aspx