dotnet core項目升級到 .net core 2.0


這幾天無疑我們已經讓.net core 2.0正式版發布的消息刷屏,這次發布整整提前了一個月的時間,關於具體的發布信息,可以去看善友大神的博客,.NET Core 2.0 正式發布信息匯總,廢話不多說,已經迫不及待的想把自己的項目從1.0變成2.0了,還不知道會不會出現意想不到的坑,拭目以待。

我們需要將所有的類庫和項目都要升級到.Net Core2.0,右鍵項目->屬性->目標框架,選擇.net core 2.0,如圖所示:

以此類推將所有的項目都改成.net core 2.0版本,接着我們將web項目中所有的Microsoft.*的依賴項全部刪除,直接Nuget萬能的Microsoft.AspNetCore.All ,刪除掉之前的引用后,變成醬紫,瞬間清爽許多,再也不用為Nuget什么包而發愁,一個All包含了所有。

Nuget包修改完后,下面修改的Program.cs文件,下面看下兩個版本的對比:

相對於1.x版本,2.0版本的Program.cs文件和StartUp.cs文件也簡化了許多,很明顯的是,appsetting.json配置文件以及日志,都在這里看不到了,他們都被放到了WebHost.CreateDefaultBuilder中,看下這個函數的源碼,

public static IWebHostBuilder CreateDefaultBuilder(string[] args)
{
    var builder = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            var env = hostingContext.HostingEnvironment;
 
            config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                  .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
 
            if (env.IsDevelopment())
            {
                var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
                if (appAssembly != null)
                {
                    config.AddUserSecrets(appAssembly, optional: true);
                }
            }
 
            config.AddEnvironmentVariables();
 
            if (args != null)
            {
                config.AddCommandLine(args);
            }
        })
        .ConfigureLogging((hostingContext, logging) =>
        {
            logging.UseConfiguration(hostingContext.Configuration.GetSection("Logging"));
            logging.AddConsole();
            logging.AddDebug();
        })
        .UseIISIntegration()
        .UseDefaultServiceProvider((context, options) =>
        {
            options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
        })
        .ConfigureServices(services =>
        {
            services.AddTransient<IConfigureOptions<KestrelServerOptions>, KestrelServerOptionsSetup>();
        });
 
    return builder;
}

日志已經不再作為中間件使用,而是直接放到了host中,這意味着,它可以記錄更底層的日志,你可以在WebHost中配置

 

Ok,到這里,我們的項目就升級完成了,快來測試下是否運行正常,

本篇內容就寫這么多了。給出微軟官方的升級向導地址:https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/

大家晚安。

掃描二維碼關注我的公眾號,共同學習,共同進步!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM