Конкретная версия System.Configuration.dll для моей надстройки DLL, когда хост-приложение нацеливается на другую версию через свой app.config?

Я пишу.NET DLL (C#), которая является надстройкой для стороннего продукта. Этот продукт включает это в файл application.exe.config:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>
</startup>

Моя DLL предназначена для.NET v3.5, и мой файл app.config включает это:

<configSections>
  <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
  <section name="myDLL.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
  </sectionGroup>
</configSections>

Когда я использую объект "Настройки" (производный от ApplicationsSettingsBase), чтобы сохранить настройку, сохранение выполняется - и данные сохраняются в файле user.config хост-приложения. Тем не менее, он сохраняется с этим в нем (обратите внимание на версию =4.0.0.0):

<configSections>
  <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
    <section name="myDLL.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    <section name="anotherVendorsDLL.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
  </sectionGroup>
</configSections>

С сохранением этих настроек моя DLL не будет загружать настройки при последующих запусках хост-приложения. На это влияет поддерживаемое время выполнения файла application.exe.config - его изменение или удаление будет означать, что файл user.config будет сохранен с другой версией =XXXX. С версией 2.0.0.0 мои настройки загружаются просто отлично.

Как я могу получить свои настройки для загрузки / сохранения без проблем без обновления файла host application.exe.config? Или мне нужно подумать об использовании альтернативного места хранения для моих настроек приложения, например, моего собственного XML-файла конфигурации или реестра?

1 ответ

Решение

В этом вопросе чего-то не хватает. DLL не может иметь свой собственный файл.config, ее разделы конфигурации должны быть объединены в файл app.exe.config. Похоже, вы не контролируете этот файл, как вы не позволяете владельцу приложения взломать вас, когда он переустанавливает или обновляет свой файл.config?

Во всяком случае, отсутствие контроля у вас очень хлопотно. Настоятельно рекомендуется хранить собственные настройки без использования файла.config. XML-файл будет хорошо.

Другие вопросы по тегам