我继承了一个相当大的项目,其中包括一个用 VB6 编写的应用程序和几个用 VB6、VB.NET 1.1 和 VB.NET 2 编写的 DLL 和 ActiveX 控件。我想更改一个用 VB 编写的 DLL 的设置之一.NET 2 在其 application.dll.config 文件中,但它似乎没有任何效果。
我的主要 VB6 应用程序(我将其称为 Alpha)有一个配置文件 (Alpha.exe.cnfig),其中包含我的 VB.NET 1.1 DLL(我将其称为 Bravo)使用的设置。调用 Bravo 后,Alpha 调用 Charlie(我的 VB.NET 2 DLL)。但是,即使我在 DLL 所在的子目录中更改了 Charlie.dll.config 中的应用程序设置,它也没有任何效果。我曾尝试将 Charlie 的设置放在 Alpha 的配置文件中,但这会导致 Bravo 因自动化错误而失败(我认为这是因为配置文件的格式从 .NET 1.1 和 .NET 2 更改)。
下面是一个简化的目录结构和文件位置示例:
\Application\Alpha\Alpha.exe(我的 VB6 应用程序)
\Application\Alpha\Alpha.exe.config(此配置文件由 Bravo.dll 使用)
\Application\Assembly\Bravo.dll(我的 VB.NET 1.1 DLL)
\Application\Controls\Charlie\Charlie.dll(我的 VB.NET 2 DLL)
\Application\Controls\Charlie\Charlie.dll.config(这个文件被 Charlie.dll 忽略)
我已经重新编译了我的 VB.NET 2 DLL,更改了默认设置,我这样做是为了检查设置本身没有代码错误,这工作正常。但是,我希望能够通知客户如何更改配置文件,以便他可以将其设置为他想要的任何内容,而无需在每次他想要不同的设置时重新编译 DLL。
我只想更改 app.config 而不是 machine.config 或 user.config。
以下是 Alpha.exe.config 的示例:
<configuration>
<appSettings>
<add key="MySetting" value="MyValue" />
</appSettings>
</configuration>
这是 Charlie.dll.config 的示例
<configuration>
<applicationSettings>
<Charlie.My.MySettings>
<setting name="MySetting" serializeAs="String">
<value>MyValue</value>
</setting>
</Charlie.My.MySettings>
</applicationSettings>
</configuration>
如果我尝试将 applicationSettings 部分在下面在 Alpha.exe.config 中的 appSettings 部分(即作为配置元素的另一个子元素)的正下方,Bravo.dll 将失败。
非常感谢您提供的任何帮助。