3 回答

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以擁有單獨(dú)的配置文件,但是您必須“手動(dòng)”讀取它,ConfigurationManager.AppSettings["key"]它將只讀取正在運(yùn)行的程序集的配置。
假設(shè)您使用Visual Studio作為IDE,可以右鍵單擊所需的項(xiàng)目→添加→新項(xiàng)→應(yīng)用程序配置文件
這將添加App.config到項(xiàng)目文件夾,將您的設(shè)置放在<appSettings>部分下。如果您沒有使用Visual Studio并手動(dòng)添加文件,請(qǐng)確保為其指定名稱:DllName.dll.config,否則以下代碼將無(wú)法正常工作。
現(xiàn)在從這個(gè)文件中讀取有這樣的功能:
string GetAppSetting(Configuration config, string key)
{
KeyValueConfigurationElement element = config.AppSettings.Settings[key];
if (element != null)
{
string value = element.Value;
if (!string.IsNullOrEmpty(value))
return value;
}
return string.Empty;
}
并使用它:
Configuration config = null;
string exeConfigPath = this.GetType().Assembly.Location;
try
{
config = ConfigurationManager.OpenExeConfiguration(exeConfigPath);
}
catch (Exception ex)
{
//handle errror here.. means DLL has no sattelite configuration file.
}
if (config != null)
{
string myValue = GetAppSetting(config, "myKey");
...
}
您還必須添加對(duì)System.Configuration命名空間的引用,以使ConfigurationManager類可用。
在構(gòu)建項(xiàng)目時(shí),除了DLL之外,您還將擁有DllName.dll.config文件,這是您必須使用DLL本身發(fā)布的文件。
以上是基本示例代碼,對(duì)于那些對(duì)全尺寸示例感興趣的人,請(qǐng)參考其他答案。

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
配置文件是應(yīng)用程序范圍的,而不是匯編范圍的。因此,您需要將庫(kù)的配置部分放在使用您的庫(kù)的每個(gè)應(yīng)用程序的配置文件中。
也就是說(shuō),從appSettings類庫(kù)中的應(yīng)用程序配置文件(特別是部分)獲取配置并不是一個(gè)好習(xí)慣。如果您的庫(kù)需要參數(shù),那么它們應(yīng)該作為方法參數(shù)在構(gòu)造函數(shù),工廠方法等中傳遞給任何調(diào)用庫(kù)的人。這可以防止調(diào)用應(yīng)用程序意外重用類庫(kù)所期望的配置條目。
也就是說(shuō),XML配置文件非常方便,因此我發(fā)現(xiàn)最好的折衷方案是使用自定義配置部分。您可以將庫(kù)的配置放在XML文件中,該文件由框架自動(dòng)讀取和解析,從而避免潛在的事故。
- 3 回答
- 0 關(guān)注
- 490 瀏覽
添加回答
舉報(bào)