У меня есть веб-приложение, в котором есть функция поиска. Алгоритм поиска скомпилирован в отдельную dll. В коде С# для алгоритма поиска я использую строки, хранящиеся в файле настроек, чтобы указать на каталог, в котором находится индекс поиска. После компиляции кода поиска информация о настройках включается в Search.dll.config
, который помещается в каталог bin вместе с Search.dll. Теперь в моем веб-приложении я добавляю Search.dll в ссылки. Файл конфигурации не добавляется в веб-приложение. Однако веб-приложение работает нормально и знает, где находится файл. Поскольку внутри Settings.Designer
он использует DefaultSettingValueAttribute
для назначения значения по умолчанию, если конфигурационный файл там отсутствует.
Как добавить Search.dll.config
в мое веб-приложение, чтобы оператор мог изменить местоположение файлов индекса на сервере, если это необходимо?
Спасибо
EDIT:
Я попытался добавить файл конфигурации в свою папку развертывания. Но ASP.NET помещает DLL в каталог в C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root...... и файл конфигурации не копируется там. Поэтому я не знаю, как включить конфигурационный файл с моим кодом.
Спасибо за вашу помощь.
Примечание:
Я использовал следующий код, чтобы получить значения конфигурационного файла в приложении. Тем не менее, это зависит от DLL и файла конфигурации, которые находятся в одной папке, и я не знаю, как это сделать.
var executingAssembly = System.Reflection.Assembly.GetExecutingAssembly();
var location = executingAssembly.Location; //C:\MyApp\bin\Debug\Search.dll
var config = ConfigurationManager.OpenExeConfiguration(location);
var sections = config.Sections; //count of this is 21
ConfigurationSectionGroup csg = config.GetSectionGroup("applicationSettings");
ConfigurationSectionCollection csc = csg.Sections;
ConfigurationSection cs = csc.Get("Search.Properties.Settings");