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

Я пишу .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 будет сохранен с другой версией = X.X.X.X. С версией = 2.0.0.0 мои настройки загружаются просто отлично.

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

1 Ответ

1 голос
/ 08 марта 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...