2013-01-22 46 views
0

好吧,所以我有2個類到目前爲止,我想把我的共同的DLL,記錄器和分貝。即時將他們從我當前的項目移動到一個新的類庫項目和改變他們的名字空間和什麼。我遇到的問題是我希望使用我的應用程序的應用程序配置(或任何我想引用commonlib.dll的應用程序),但我不知道如何使用引用項目app.config。有沒有辦法做到這一點?我的commonLib.dll如何使用引用應用程序app.config?

回答

2

OpenExeConfiguration() methods of ConfigurationManager是您的機票。其中一個將採用可執行文件的路徑,允許您打開指定應用程序的應用程序配置(甚至是不同的應用程序配置;您可以使用此技術在啓動Process.Start()之前更改其他應用程序的配置) 。另一個將爲指定的用戶級別(所有用戶,當前漫遊用戶以及當前漫遊用戶和本地用戶)打開當前應用程序的app.config(即使您的庫已被多個應用程序使用)。通常,在處理實際的app.config時,您需要適用於所有用戶的那個;每個用戶的配置都存儲在每個用戶的AppData文件夾中。

另外,最後一件事;除非您的庫有自己的配置文件,ConfigurationManager屬性(如AppSettings)將基於當前可執行文件的app.config進行填充。所以它可以像使用這些屬性一樣簡單。請記住,這些屬性是隻讀的,只在程序啓動時加載一次,所以如果在程序執行過程中對您的配置進行更改並希望立即生效,最好顯式加載/保存配置文件。

+0

好的,就像OpenExeConfiguration(System.Reflection.Assembly.GetCallingAssembly()。Location) – JBurlison

+0

或GetEntryAssembly(),它是由shell或非託管代碼調用的程序集來啓動CLR。就像我說過的,如果你自己的庫有它自己的app.config,你只需要指定可執行文件;否則,OpenExeConfiguration(ConfigurationUserLevel.None)應該沒問題。 – KeithS

相關問題