前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NetCore2.1升级到3.1记录

.NetCore2.1升级到3.1记录

作者头像
李明成
发布2020-04-02 17:19:30
1.3K0
发布2020-04-02 17:19:30
举报
文章被收录于专栏:dotNET知音dotNET知音

.NetCore 项目从2.1升级到3.1过程中的实战,简单整理记录下

1.TargetFramework 升级

这步比较简单,站点,类库修改下版本。

代码语言:javascript
复制
 <TargetFramework>netcoreapp2.1</TargetFramework>
 由原来的2.1-》3.1
2.替换掉旧的属性

2.1

3.1

IHostingEnvironment

IWebHostEnvironment

services.AddMvc()

services.AddControllersWithViews()

等等....

3.不生成 *.Views.dll 处理
代码语言:javascript
复制
.NET core 默认会把.Cshtml文件生成对应的dll,如果只修改页面信息,还需要重新编译,不太方便!以下方式发布,可以在发布的时候不生成*.Views.dll 

2.1方式
- 编辑项目.csproj 新增<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish> 如下

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
  </PropertyGroup>

3.1方式
- 安装包: Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
- 更新项目的 Startup.ConfigureServices 方法 添加 mvcBuilder.AddRazorRuntimeCompilation();
- 编辑项目.csproj 新增   <RazorCompileOnPublish>false</RazorCompileOnPublish> 如下

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
  </PropertyGroup>


4.NetCore 类库引用问题

我原来的.NetCore类库升级之后结果发生错误 如图

按照以往的经验,报错按照提示解决就是了

以为缺少对应的包,然后去nuget安装时发现 最新版本是2.2 ,跟.NETcore web 项目引用的版本不一样。

查看了官网说明之后,知道问题所在。

  • 面向 Microsoft.NET.Sdk.Web SDK 的项目隐式引用 Microsoft.AspNetCore.App 框架。
代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
    ...
</Project>
  • 面向 Microsoft.NET.Sdk 或 Microsoft.NET.Sdk.Razor SDK 的项目 如果需要,只能手工添加Microsoft.AspNetCore.App
代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>
    ...
</Project>

到此.NetCore 类库,可以正确的使用Microsoft.AspNetCore.App。那这两个共享框架的区别在哪里呢?

框架名称

描述

Microsoft.NETCore.App

基本运行时. 它支持 System.Object, List<T>, string, memory management(内存管理), file(文件) and network IO(网络io), threading(线程), etc.

Microsoft.AspNetCore.App

默认的Web运行时. 他导入 Microsoft.NETCore.App, 并添加api以使用Kestrel创建HTTP server, Mvc, SignalR, Razor, and EF Core 部分

5.NETcore3.1 集成Autofac方式变动
  • 在创建主机时添加AutofacServiceProviderFactory
代码语言:javascript
复制
  public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

  • 在startup.cs添加ConfigureContainer方法,然后可以使用ContainerBuilder用来访问autofac容器,并注入。
代码语言:javascript
复制
  public void ConfigureContainer(ContainerBuilder builder)
  {
     
  }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 dotNET知音 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.TargetFramework 升级
  • 2.替换掉旧的属性
  • 3.不生成 *.Views.dll 处理
  • 4.NetCore 类库引用问题
  • 5.NETcore3.1 集成Autofac方式变动
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档