升级到 .NET Core 2.1
.NET Core 2.0 中的项目文件
在 .NET Core 2.0 时代,项目文件中的 TargetFramework
设置为 netcoreapp2.0
,应用必须引用的库为 Microsoft.AspNetCore.All
。
如果我们还需要使用 Entity Framework 的工具,还需要添加工具引用。
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> <ItemGroup> <Folder Include="wwwroot\" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> </ItemGroup> </Project>
但是,随着 .NET Core 2.1
的发布,微软已经建议不再使用 Microsoft.AspNetCore.All
这个包。
We recommend applications targeting ASP.NET Core 2.1 and later use the Microsoft.AspNetCore.App rather than this package. See Migrating from Microsoft.AspNetCore.All to Microsoft.AspNetCore.App in this article.
对于面向 ASP.NET Core 2.1 及更高版本的应用程序,建议使用 Microsoft.AspNetCore.App 而不是此包。见文内的 从 Microsoft.AspNetCore.All 迁移到 Microsoft.AspNetCore.App
来源:Microsoft.AspNetCore.All metapackage for ASP.NET Core 2.0
关于 Microsoft.AspNetCore.App
在 .NET Core 2.1
中,项目文件中的TargetFramework
设置为 netcoreapp2.1
,而引用的包则变成 Microsoft.AspNetCore.App
。
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" /> </ItemGroup> </Project>
而且,Microsoft.EntityFrameworkCore.Tools.DotNet
已经包含于 Microsoft.AspNetCore.App
之内,不再需要单独安装。
The .NET Core SDK version 2.1.300 and newer includes dotnet ef commands that are compatible with EF Core 2.0 and later versions. Therefore if you are using recent versions of the .NET Core SDK and the EF Core runtime, no installation is required and you can ignore the rest of this section.
On the other hand, the dotnet ef tool contained in .NET Core SDK version 2.1.300 and newer is not compatible with EF Core version 1.0 and 1.1. Before you can work with a project that uses these earlier versions of EF Core on a computer that has .NET Core SDK 2.1.300 or newer installed, you must also install version 2.1.200 or older of the SDK and configure the application to use that older version by modifying its global.json file. This file is normally included in the solution directory (one above the project). Then you can proceed with the installlation instruction below.
.NET Core SDK version 2.1.300 及更新版本包含了兼容 EF Core 2.0 及更新版本的 dotnet ef 命令行工具。因此,如果您使用最新版本的 .NET Core SDK 和 EF Core 运行时,将不再需要安装此工具,您可以忽略剩下的步骤。
从另一个方面来说,包含于 .NET Core SDK version 2.1.300 及更新版本的 dotnet ef 工具不兼容 EF Core 1.0 和 1.1。在您于安装了 .NET Core SDK 2.1.300 或更新版本的计算机上,使用这些包含早期版本的 EF Core 项目之前,您必须还要安装 2.1.200 或者更早的 SDK ,并通过修改项目的 global.json 来配置应用程序使用早期版本。该文件通常位于解决方案文件夹中(项目的上一级)。然后可以按照如下安装指导处理。
来源:EF Core .NET Command-line Tools
从 Microsoft.AspNetCore.All 迁移到 Microsoft.AspNetCore.App
下面所列出的内容包含于 Microsoft.AspNetCore.All
但不包含于 Microsoft.AspNetCore.App
包内。
-
Microsoft.AspNetCore.ApplicationInsights.HostingStartup
-
Microsoft.AspNetCore.AzureAppServices.HostingStartup
-
Microsoft.AspNetCore.AzureAppServicesIntegration
-
Microsoft.AspNetCore.DataProtection.AzureKeyVault
-
Microsoft.AspNetCore.DataProtection.AzureStorage
-
Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv
-
Microsoft.AspNetCore.SignalR.Redis
-
Microsoft.Data.Sqlite
-
Microsoft.Data.Sqlite.Core
-
Microsoft.EntityFrameworkCore.Sqlite
-
Microsoft.EntityFrameworkCore.Sqlite.Core
-
Microsoft.Extensions.Caching.Redis
-
Microsoft.Extensions.Configuration.AzureKeyVault
-
Microsoft.Extensions.Logging.AzureAppServices
-
Microsoft.VisualStudio.Web.BrowserLink
在从 Microsoft.AspNetCore.All
迁移到 Microsoft.AspNetCore.App
时,如果您的应用使用了来自上述包或者这些包所引入的包中所提供的 API,在您的项目中添加其引用。
不会隐式包含非 Microsoft.AspNetCore.App
依赖项的上述包的任何依赖项。 例如:
-
StackExchange.Redis
作为Microsoft.Extensions.Caching.Redis
的依赖 -
Microsoft.ApplicationInsights
作为Microsoft.AspNetCore.ApplicationInsights.HostingStartup
的依赖
从 .NET Core 2.0 迁移到 .NET Core 2.1
-
打开项目文件 ( *.csproj, *.vbproj, 或者 *.fsproj 文件)。
-
将 target framework 值从
netcoreapp2.0
修改为netcoreapp2.1
。目标框架由元素<TargetFramework>
或者<TargetFrameworks>
定义。例如,将
<TargetFramework>netcoreapp2.0</TargetFramework>
修改为<TargetFramework>netcoreapp2.1</TargetFramework>
。 -
删除适用于 .NET Core 2.1 SDK (v 2.1.300 及更新版本) 中捆绑的工具的
<DotNetCliToolReference>
引用。这些引用包括:-
dotnet-watch (Microsoft.DotNet.Watcher.Tools)
-
dotnet-user-secrets (Microsoft.Extensions.SecretManager.Tools)
-
dotnet-sql-cache (Microsoft.Extensions.Caching.SqlConfig.Tools)
-
dotnet-ef (Microsoft.EntityFrameworkCore.Tools.DotNet)
在从前的 .NET Core SDK 版本中,项目中的这些工具引用如下所示:
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
由于这些条目不再被 .NET Core SDK 所使用,如果您仍旧在项目中使用了这些打包的工具,您将看到类似如下所示的警告:
The tool 'Microsoft.EntityFrameworkCore.Tools.DotNet' is now included in the .NET Core SDK. Here is information on resolving this warning.
从项目文件的
<DotNetCliToolReference>
中删除这些引用可以修复该问题。 -
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?