我繼承了一個相當大的項目,它包含用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