wake-up-neo.com

Upgrade von ASP.NET Core 2.2 auf 3.0

Ich habe ein ASP.NET Core-Projekt mit folgender csproj Konfiguration:

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

Ich möchte das Projekt auf <TargetFramework>netcoreapp3.0</TargetFramework> Aktualisieren. Dabei erhalte ich jedoch folgende Warnung:

C:\Programme\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\Ziele\Microsoft.NET.Sdk.DefaultItems.targets (149,5): Warnung NETSDK1080: Eine Paketreferenz auf Microsoft.AspNetCore.App ist beim Targeting von .NET Core 3.0 oder höher nicht erforderlich. Wenn Microsoft.NET.Sdk.Web verwendet wird, wird automatisch auf das freigegebene Framework verwiesen. Andernfalls sollte die PackageReference durch eine FrameworkReference ersetzt werden.

Was genau ist die Lösung dafür? Ich habe versucht, den Verweis auf Microsoft.AspNetCore.App Zu entfernen, aber das funktioniert nicht. Der Code verweist nicht auf das gemeinsam genutzte Framework.

Was bedeutet auch "Andernfalls sollte die PackageReference durch eine FrameworkReference ersetzt werden"?

17
Abhi

Wenn Sie ein Webprojekt erstellen, stellen Sie bitte sicher, dass die erste Zeile Ihrer Projektdatei lautet:

<Project Sdk="Microsoft.NET.Sdk.Web">

In diesem Fall ist das Framework automatisch enthalten: Microsoft.AspNetCore.App. Sie müssen es nicht erneut einfügen.

https://docs.Microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio#framework-reference

Wenn Sie eine Rasierbibliothek und kein Webprojekt erstellen, stellen Sie bitte sicher, dass die erste Zeile Ihrer Projektdatei lautet:

<Project Sdk="Microsoft.NET.Sdk.Razor">

In diesem Fall hängt Ihre Bibliothek möglicherweise von einer Klasse in ASP.NET Core Ab. Sie müssen dies hinzufügen:

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

Vergessen Sie nicht hinzuzufügen:

    <AddRazorSupportForMvc>true</AddRazorSupportForMvc>

zu <PropertyGroup>

Wenn Sie weder eine Rasierbibliothek noch ein Webprojekt erstellen, benötigen Sie normalerweise nicht Microsoft.AspNetCore.App. Wenn Sie wirklich sicherstellen können, was Sie tun und wirklich brauchen, sollten Sie Folgendes hinzufügen:

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

Das Aktualisieren der Projektdatei mit dem folgenden Fix behebt es für mich:

<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>

Referenz

0
mparkuk