我继承了一个相当大的项目,它包含用VB6编写的应用程序以及用VB6,VB.NET 1.1和VB.NET 2编写的几个DLL和ActiveX控件。我希望更改其中一个在VB.NET 2中编写的其中一个在其application.dll.config文件中的DLL的设置之一,但它似乎没有任何作用。.NET 1.1和.NET 2配置文件一起工作
我的主VB6应用程序(我将称之为Alpha)有一个配置文件(Alpha.exe.cnfig),其中包含我的VB.NET 1.1 DLL(我将称之为Bravo)所使用的设置。在调用Bravo之后,Alpha调用Charlie(我的VB.NET 2 DLL)。但是,即使我更改了DLL所在的子目录中的Charlie.dll.config中的应用程序设置,它也没有任何作用。我试图把查理的设置放在阿尔法的配置文件中,但这会导致布拉沃因自动化错误而失败(我认为这是因为配置文件的格式从.NET 1.1和.NET 2改变而来)。
下面是一个简化的目录结构和文件位置例如:
\应用程序\阿尔法\ Alpha.exe(我的VB6应用程序)
\应用程序\阿尔法\ Alpha.exe.config(这个配置文件被用于(我的VB.NET 2动态链接库)
\ 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失败。
非常感谢您提供的任何帮助。
那是我的意思被下,在正下方,而不是内,遗憾的混乱。我试过你的建议,它会导致自动化错误,我猜测是因为.NET 1.1无法理解配置文件的.NET 2部分。 – AnturCynhyrfus 2009-01-19 13:01:32