Можно ли ссылаться на домашний каталог в appSettings в файле App.config? - PullRequest
6 голосов
/ 11 июля 2011

У меня есть этот проект C # в Visual Studio (2010), и я хотел бы сослаться на файл в моем домашнем каталоге в разделе <appSettings> файла App.config проекта.То есть я использую этот синтаксис:

<appSettings>
    <add key="Database" value="sqlite:///C:\Users\arvek\test.db3" />
</appSettings>

Можно ли ссылаться на мой домашний каталог (C: \ Users \ arvek) через переменную вместо прямого ее жесткого кодирования?F.ex .: value = "sqlite: /// $ HOME \ test.db3".

Ответы [ 2 ]

9 голосов
/ 11 июля 2011

ConfigurationManager не будет автоматически расширять что-либо в настройках приложения, поскольку это просто строки произвольной формы, но вы можете сделать это вручную. Используйте ExpandEnvironmentVariables метод Environment, который расширит переменные формы %VARIABLENAME% в соответствии с текущей средой. Итак:

<appSettings>
    <add key="Database" value="sqlite:///%APPDATA%\database\test.db3" />
</appSettings>


string path = Environment.ExpandEnvironmentVariables(ConfigurationManager.AppSettings["Database"]);

Корневой путь к вашему «домашнему» каталогу находится в переменной% USERPROFILE%, хотя% APPDATA% - это традиционное место для обозначения того, о чем вы говорите. Существует также% ALLUSERSPROFILE% для общесистемных данных (хотя в Windows 7 он фактически указывает на специальную общесистемную папку данных, а не на «общедоступный» профиль).

0 голосов
/ 11 июля 2011

Мне проще получить каталог приложения с помощью этой простой строки кода

string appBasePath = AppDomain.CurrentDomain.BaseDirectory;

Вот как я всегда к этому отношусь.

...