Конкретная версия 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-файл будет хорошо.