程序配置amp;amp;ConfigurationManager
? ? ?配置組件是.net framework中非常常用的功能。在創(chuàng)建.net framework 工程時(shí),系統(tǒng)不僅會(huì)自動(dòng)生成app.config文件,而且還提供了非常強(qiáng)大的訪問類庫(kù)。但是這些好東西,在.net core 2.0中已經(jīng)不復(fù)存在,至少說(shuō)沒有.net framework 中那么完美了。
???? 在升級(jí).net framework 程序到.net core 2.0時(shí),如果通過.NET Portability Analyzer分析代碼,會(huì)發(fā)現(xiàn)下面的提示,.net core:supported 2.0+,.net standard:not supported.雖然.net 2.0暫時(shí)不支持,但是微軟提供的擴(kuò)展類庫(kù)是支持的,需要自己找Microsoft.Extention類庫(kù)去。
???? 好吧。既然Core 2.0中沒有COnfigurationManager,我們就簡(jiǎn)單封裝一個(gè)吧。首先,創(chuàng)建一個(gè).net core 2.0 的類庫(kù)工程.
然后打開nuget包管理。輸入:Microsoft.Extensions.Configuration.Json,然后安裝即可。
???? 在剛才新建的工程中新增類:ConfigurationManager,命名空間可以自定義了。然后,加入下面代碼。
public class ConfigurationManager
??? {
??????? private static IConfigurationRoot config = null;
??????? static ConfigurationManager()
??????? {
??????????? // Microsoft.Extensions.Configuration擴(kuò)展包提供的
??????????? var builder = new ConfigurationBuilder()
??????????????? .AddJsonFile("app.json");
??????????? config = builder.Build();
??????? }
?????? public static IConfigurationRoot AppSettings
??????? {
??????????? get
??????????? {
??????????????? return config;
??????????? }
??????? }
?????? public static string Get(string key)
??????? {
??????????? return config[key];
??????? }
?? }
???? 新建一個(gè).net core 管理控制臺(tái)程序,并新增加文件:app.config。文件內(nèi)容為:
{
?????? "Name": "my-other-value"
}
???? 在管理控制臺(tái)程序的Main函數(shù)中,編寫下面代碼,同時(shí)添加對(duì)類庫(kù)工程的引用。配置問題比較順利的搞定!
static void Main(string[] args)
{
??? Console.WriteLine(ConfigurationManager.AppSettings["Name"]);
??? Console.ReadLine();
}
OK,通過上面努力,終于解決了配置的問題了。但是,有更簡(jiǎn)單的方法。直接在nuget管理中搜索:System.Configuration.ConfigurationManager,添加引用后,問題解決,System.Configuration.ConfigurationManager已經(jīng)支持.netstandard 2.0。郁悶,微軟提供了這些類庫(kù),不知道為什么不放到公共的類庫(kù)中呢?害的我大費(fèi)周折。
上述代碼等價(jià)于使用System.Configuration.ConfigurationManager:
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? var builder = new ConfigurationBuilder()
? ? ? ? ? ? ? ? ? ?.AddJsonFile("app.json");
? ? ? ? ? ? var conStr = ConfigurationManager.AppSettings["Name"];
? ? ? ? ? ? Console.WriteLine($"Hello World! {conStr}");
? ? ? ? }
? ? }
}
點(diǎn)評(píng):
很多包都用Nuget來(lái)管理后,有很多人對(duì)這個(gè)不了解,在此向大家推薦一個(gè)微軟的Nuget 包查找網(wǎng)站:?https://packagesearch.azurewebsites.net/
相關(guān)文章:?
.NET應(yīng)用遷移到.NET Core(一)
.NET應(yīng)用遷移到.NET Core(二)風(fēng)險(xiǎn)評(píng)估
.NET應(yīng)用遷移到.NET Core(三)從商業(yè)角度看移植過程
.NET應(yīng)用遷移到.NET Core--調(diào)查案例
遷移傳統(tǒng).net 應(yīng)用到.net core [視頻]
應(yīng)用工具 .NET Portability Analyzer 分析遷移dotnet core
.net core 2.0學(xué)習(xí)筆記(一):開發(fā)運(yùn)行環(huán)境搭建
.net core 2.0學(xué)習(xí)筆記(二):Hello World & 進(jìn)階
度量.net framework 遷移到.net core的工作量
遷移.net framework 工程到.net core
原文地址:http://www.cnblogs.com/vveiliang/p/7416370.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的程序配置amp;amp;ConfigurationManager的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Orleans简单配置
- 下一篇: 为什么我们要使用Async、Await关