从ASP.Net Core 2.2升级到3.0

时间:2019-09-30 08:24:43

标签: upgrade .net-core-3.0 asp.net-core-3.0

我有一个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): warning NETSDK1080: A 
PackageReference to Microsoft.AspNetCore.App is not necessary when targeting
.NET Core 3.0 or higher. If Microsoft.NET.Sdk.Web is used, the shared 
framework will be referenced automatically. Otherwise, the PackageReference 
should be replaced with a FrameworkReference.

此修复程序的确切解决方案是什么?我尝试删除对Microsoft.AspNetCore.App的引用,但这不起作用。该代码未引用共享框架。

此外,“否则,应将PackageReference替换为FrameworkReference”。是什么意思?

2 个答案:

答案 0 :(得分:11)

如果要构建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>

如果您不构建剃刀库或Web项目,通常不需要Microsoft.AspNetCore.App。如果您确实可以确定自己在做什么并且确实需要它,请考虑添加:

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

答案 1 :(得分:0)

使用以下修复程序更新项目文件:

<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