C# 当主机应用程序通过其app.config以不同版本为目标时,我的加载项dll的System.Configuration.dll的特定版本?

C# 当主机应用程序通过其app.config以不同版本为目标时,我的加载项dll的System.Configuration.dll的特定版本?,c#,app-config,user.config,C#,App Config,User.config,我正在编写一个.NET DLL(C#),它是第三方产品的外接程序。该产品在其application.exe.config文件中包含以下内容: <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup> 我的DLL以.NET v3.5为目标,我的app.config文件包括: <configSections>

我正在编写一个.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>

当我使用设置对象(从ApplicationSettingsBase派生)保存设置时,保存工作正常,数据保存到主机应用程序的user.config文件中。但是,它是与此一起保存的(注意版本=4.0.0.0):


保存这些设置后,“我的DLL”将不会在主机应用程序的后续运行中加载这些设置。application.exe.config的supportedRuntime对此有影响-更改或删除它将意味着user.config文件以不同的版本保存=X.X.X.X。当版本=2.0.0.0时,我的设置可以正常加载


<> P> <强>我如何在没有更新主机应用程序.Ex.CONFIG文件的情况下加载或保存一个问题,或者我需要考虑为我的应用程序设置使用一个替代的存储位置,比如我自己的XML配置文件或注册表?< /p> < p>这个问题中缺少了一些东西。DLL不能有自己的.config文件,其配置部分必须合并到app.exe.config文件中。听起来你不控制这个文件,你如何防止应用程序的所有者在重新安装或更新他的.config文件时破坏你


无论如何,你缺乏控制是非常麻烦的。强烈建议在不使用.config文件的情况下存储您自己的设置。一个.xml文件就可以了。

这个问题缺少一些东西。DLL不能有自己的.config文件,其配置部分必须合并到app.exe.config文件中。听起来你不控制这个文件,你如何防止应用程序的所有者在重新安装或更新他的.config文件时破坏你


无论如何,你缺乏控制是非常麻烦的。强烈建议在不使用.config文件的情况下存储您自己的设置。一个.xml文件就可以了。

如果你不想更新主机应用程序配置,你可以创建一个文件夹结构并提供一个内部配置文件,该文件将覆盖父配置的设置…还可以签出@sajoshi-听起来很有趣,您可以提供更多详细信息或指向更多详细信息的链接吗?如果您不想更新主机应用程序配置,您可以创建一个文件夹结构,并提供一个内部配置文件,该文件将覆盖父配置的设置…还可以签出@sajoshi-听起来很有趣,您能提供更多详细信息或链接到更多详细信息吗?您是对的-我的DLL配置文件是多余的。缺乏控制让我担心。我将继续存储我自己的设置。我不确定他是否理解你提出的问题,但至少他得到了一个好的答案!你说得对-我的DLL配置文件是多余的。缺乏控制让我担心。我将继续存储我自己的设置。我不确定他是否理解你提出的问题,但至少他得到了一个好的答案!
<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>