Расположение файла app.config, используемого указанной библиотекой для My.Settings?

Если у меня есть библиотека классов сapp.config файл (я знаю это 'Это не идеально, просто потерпите меня на мгновение), в котором есть значения параметров, созданные с помощью вкладки «Параметры проекта» и доступ к которым выглядит следующим образом:

Public Shared Function GetMySetting(key As String) As String
    Dim value As String = My.Settings.Item(key)
    If value = String.Empty Then value = "Setting " & key & " not found."
    Return value
End Function

Затем я получаю настройки из приложения следующим образом:

sb.AppendLine("GetMySetting: " & Library.Settings.GetMySetting("SettingC"))

Настройки из файла app.config библиотечного проекта определенно не копируются в файл app.config приложения, но я все еще могу получитьMy.Settings из библиотек.app.config

Поэтому я добавилGetConfigFileName функция к библиотеке:

Public Shared Function GetConfigFileName() As String
    Return AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
End Function

и получил его в приложении:

sb.AppendLine("Library Config File: " & Library.Settings.GetConfigFileName)

но это возвращаетПриложения Конфигурационный файл

Как определить, из какого файла .config библиотека читает, когда вызывает My.Settings ...?

Или они скомпилированы в DLL?

 SpaceBison24 июн. 2013 г., 12:15
Настройка по умолчанию, вероятно, скомпилирована в DLL - это 'Я буду внутри скрытого файла дизайнера, я подозреваю. Параметры конфигурации должны переопределить этот параметр по умолчанию.
 SpaceBison24 июн. 2013 г., 12:26
Вы используете Visual Studio? Если вы найдете имя установочного ключа (по имени) - выЯ, вероятно, найду версию на основе кода - она, вероятно, будет называтьсяGlobal.System.Configuration.DefaultSettingValueAttribute
 Carl Onager24 июн. 2013 г., 14:17
В файле Settings.Designer.vb есть такое свойство, но класс это 's in (MySettings) наследуется от ApplicationSettingsBase, который должен содержать код обработки файла (если есть)
 Carl Onager24 июн. 2013 г., 12:16
Это'странно, я ожидал, что не смогу извлечь настройки из библиотеки при использовании My.Settings так, как я

Ответы на вопрос(2)

Я думаю, что вижу, что вы после. My.Settings будет использовать скомпилированные значения из настроек ваших классов в качестве значений по умолчанию. Я считаю, что они скомпилированы в. Вы можете отразить источник, хотя, чтобы увидеть, устанавливает ли он атрибут defaultvalue для них.

Вы можете переопределить их, установив значения в главномс приложением файла. Если настройки неt в файле exes, тогда вы будете использовать значения по умолчанию, которые вы указали в библиотеках классов.

Ты не долженне волнует имя файла. Просто предположите, что настройки либо по умолчанию, либо были переопределены. Если вам нужно знать, были ли они переопределены, этоЕще одна проблема.

 Carl Onager25 июн. 2013 г., 09:36
Вы'Если вы не понимаете ситуацию, перечитайте эту строку: параметры из файла app.config библиотечного проекта определенно не копируются в файл app.config приложения, но я все еще могу получить My.Settings из библиотек app.config.
Решение Вопроса

из какого файла .config библиотека читает, когда вызывает My.Settings ...?

По умолчанию это всегда будет.main.exe.config

Посмотрите на это для подробного ответаC # DLL файл конфигурации для получения дополнительной информации

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

РЕДАКТИРОВАТЬ

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

Ты прав. Ваши настройки в dll.config не будут автоматически скопированы в app.config.

Что касается значения, которое вы можете получить от вашей DLL, я все еще ищу более официальный ответ, но ответ, кажется, будет:

'старый» значения (те, которые вы определяете во время разработки) жестко запрограммированы. Если работа неНе имея доступа к конфигурационному файлу или открывая его, он будет использовать значения по умолчанию. Это всегда будет происходить, если вы используете настройки в DLL.

Взгляните на этоSettings.Default. <недвижимость> всегда возвращает значение по умолчанию вместо значения в постоянном хранилище (файл XML)

 Carl Onager25 июн. 2013 г., 09:35
Вы'Если вы не понимаете ситуацию, перечитайте эту строку: параметры из файла app.config библиотечного проекта определенно не копируются в файл app.config приложения, но я все еще могу получить My.Settings из библиотек app.config.
 Chris25 июн. 2013 г., 19:31
@ClaraOnager Посмотреть мои правки
 Carl Onager26 июн. 2013 г., 09:37
Как оказалось, это укрепило мое новое эмпирическое правило:Дон»использовать My.Settings, Я'Теперь я буду придерживаться ConfigurationManager.Appsettings

Ваш ответ на вопрос