【发布时间】:2010-10-02 05:30:23
【问题描述】:
我继承了一个相当大的项目,其中包含一个用 VB6 编写的应用程序和几个用 VB6、VB.NET 1.1 和 VB.NET 2 编写的 DLL 和 ActiveX 控件。我想更改其中一个 DLL 的设置用 VB.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 部分 under 直接放在 Alpha.exe.config 中的 appSettings 部分(即作为配置元素的另一个子元素)下方,那么 Bravo.dll 将失败。
非常感谢您提供的任何帮助。
【问题讨论】:
标签: .net vb.net interop app-config config