从 ASP.NET Core 2.2 升级到 3.0
Posted
技术标签:
【中文标题】从 ASP.NET Core 2.2 升级到 3.0【英文标题】:Upgrading from ASP.NET Core 2.2 to 3.0 【发布时间】:2020-01-29 12:31:49 【问题描述】:我有一个具有以下csproj
配置的 ASP.NET Core 项目:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
我想将项目升级到<TargetFramework>netcoreapp3.0</TargetFramework>
。但是,这样做后,我收到以下警告:
C:\Program Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\targets\ Microsoft.NET.Sdk.DefaultItems.targets(149,5):警告 NETSDK1080:对 Microsoft 的 PackageReference。面向 .NET Core 3.0 或更高版本时,不需要 AspNetCore.App。如果使用 Microsoft.NET.Sdk.Web,则会自动引用共享框架。否则,应将 PackageReference 替换为 FrameworkReference。
解决这个问题的具体方法是什么?我试图删除对Microsoft.AspNetCore.App
的引用,但这不起作用。该代码未引用共享框架。
另外,“否则,应该将 PackageReference 替换为 FrameworkReference”是什么意思?
【问题讨论】:
迁移说明可在 ASP.NET Core 文档站点获得:Migrate from ASP.NET Core 2.2 to 3.0。他们解释说根本不需要这个包引用,使用“Microsoft.NET.Sdk.Web”SDK 的包会自动添加它。以Razor
为目标的项目需要将其添加为FrameworkReference
【参考方案1】:
使用以下为我修复它更新项目文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UserSecretsId>My-secret</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0" />
</ItemGroup>
</Project>
Reference
【讨论】:
【参考方案2】:如果您正在构建一个 Web 项目,请确保您的项目文件的第一行是:
<Project Sdk="Microsoft.NET.Sdk.Web">
在这种情况下,它会自动包含在框架中:Microsoft.AspNetCore.App
。您不必再次包含它。
https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio#framework-reference
如果您正在构建剃刀库而不是 Web 项目,请确保项目文件的第一行是:
<Project Sdk="Microsoft.NET.Sdk.Razor">
在这种情况下,您的库可能依赖于 ASP.NET Core
中的某个类。你必须添加这个:
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
别忘了补充:
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
致<PropertyGroup>
如果您不构建 Razor 库或 Web 项目,通常不需要Microsoft.AspNetCore.App
。如果您确实可以确定自己在做什么并且确实需要它,请考虑添加:
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
【讨论】:
我的既不是 web 也不是 Razor 项目……它是一个普通的类库。所以,最后一个建议奏效了。谢谢! 我只是右键单击 Dependencies > Packages 下的 Microsoft.AspNetCore.App 包并选择了删除以上是关于从 ASP.NET Core 2.2 升级到 3.0的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 错误 502.5 - 升级到 ASP.NET Core 2.2 后 ANCM 进程外启动失败
从 ASP.NET Core 3.1 升级到 ASP.NET 5.0 后,User.Claims 为空
从 2.2 迁移到 3.1 的 ASP.Net Core 解决方案在发布时不会运行
从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用
Linq 查询在 ASP.NET-Core 3.0 及更高版本中对数字等字符串进行排序
ASP.NET Core 2.2 MVC MapRoute 项目到 ASP.NET 3.0 端点 MapAreaControllerRoute “找不到此本地主机页面”