Где физически расположены файлы конфигурации для библиотек классов? - PullRequest
2 голосов
/ 26 марта 2010

Полагаю, этот вопрос подпадает под категорию "дух", но, тем не менее, я запутался.

При использовании файлов конфигурации, например, в приложении Windows Forms, файл конфигурации можно найти в C: \ Program files \ CompanyName \ ProductName \ Application.exe.config . Тем не менее, с библиотекой классов, которую я разрабатываю, я не вижу файл « ClassLibrary.dll.config » в папке установки после его установки (в тандеме с другим проектом) из Visual Studio. Хотя я нигде не вижу файл, получение данных из него работает правильно. Кроме того, запуск следующего кода из метода в библиотеке классов возвращает ожидаемый путь: C: \ Program Files \ CompanyName \ ProductName \ ClassLibrary.dll.config .

Если бы кто-то мог пролить свет на то, что мне здесь не хватает, это было бы действительно здорово.

public static string MyMethod()
{
Assembly assem = Assembly.GetExecutingAssembly();
Configuration config = ConfigurationManager.OpenExeConfiguration(assem.Location);

return "The assembly location was: " + assem.Location + Environment.NewLine +
"The config file path was: " + config.FilePath;

// Gives me "C:\Program files\CompanyName\ProductName\ClassLibrary.dll.config"

}

Ответы [ 4 ]

3 голосов
/ 26 марта 2010

В библиотеке классов файл app.config довольно бесполезен. Значения параметров приложения сохраняются в файле Settings.settings и компилируются в файл Settings.designer.cs.

Если вы измените значение одного из параметров вашего приложения непосредственно в app.config, это не повлияет на значение параметра, видимое при запуске приложения. Вы должны фактически открыть редактор настроек, после чего он заметит разницу между файлом app.config и файлом Settings.settings и спросит, хотите ли вы обновить файл Settings.settings, используя значения из приложения .config.

2 голосов
/ 26 марта 2010

Зависит от версии .NET. До .NET 4.0 библиотеки классов не могли использовать свои собственные файлы app.config, если вы не выполняете пользовательские операции для чтения данных. В этих сценариях у вас должна быть инициализация ваших библиотек классов, требующая все соответствующие данные и передать их из конфигурации вашего потребляющего класса (то есть, в конечном итоге, из файла app.config вашей winform).

1 голос
/ 26 марта 2010

Ваша библиотека классов будет использовать файл конфигурации исполняемого файла, который ее вызвал.

0 голосов
/ 26 марта 2010

Ваше значение по умолчанию хранится в DLL.

Но допустим, вы изменили настройку в коде и сохранили ее. Где он хранится в следующий раз?

В WinXP смотрите:

C: \ Documents and Settings \ имя пользователя \ Local Settings \ Application Data \

или в Windows Vista / 7 смотрите:

C: \ Users \ имя пользователя \ AppData \ Local \

Вы найдете папку с именем вашего приложения и, углубившись в эту папку, вы найдете файл с именем user.config.

Например:

C: \ Documents and Settings \ имя пользователя \ Локальные настройки \ Данные приложения \ MyApp \ myapp.exe_urlla1ii3sytrhx0adqtjnjuc24oacqpgu4 \ 1.0.0.0 \ user.config

...