web-dev-qa-db-fra.com

Mise à niveau d'ASP.NET Core 2.2 vers 3.0

J'ai un projet ASP.NET Core avec la configuration csproj suivante:

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

Je souhaite mettre à niveau le projet vers <TargetFramework>netcoreapp3.0</TargetFramework>. Ce faisant, cependant, je reçois l'avertissement suivant:

C:\Program Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\target\Microsoft.NET.Sdk.DefaultItems.targets (149,5): avertissement NETSDK1080: A PackageReference to Microsoft.AspNetCore.App n'est pas nécessaire lors du ciblage de .NET Core 3.0 ou supérieur. Si Microsoft.NET.Sdk.Web est utilisé, le cadre partagé sera référencé automatiquement. Sinon, PackageReference doit être remplacé par FrameworkReference.

Quelle est précisément la solution à cela? J'ai essayé de supprimer la référence à Microsoft.AspNetCore.App, mais cela ne fonctionne pas. Le code ne fait pas référence au cadre partagé.

De plus, que signifie "sinon, la référence de package doit être remplacée par une référence de cadre"?

17
Abhi

Si vous créez un projet Web, assurez-vous que la première ligne de votre fichier de projet est:

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

Dans ce cas, il est automatiquement inclus dans le framework: Microsoft.AspNetCore.App. Vous n'avez pas besoin de l'inclure à nouveau.

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

Si vous créez une bibliothèque de rasoirs et non un projet Web, assurez-vous que la première ligne de votre fichier de projet est:

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

Dans ce cas, votre bibliothèque peut dépendre d'une classe de ASP.NET Core. Vous devez ajouter ceci:

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

N'oubliez pas d'ajouter:

    <AddRazorSupportForMvc>true</AddRazorSupportForMvc>

à <PropertyGroup>

Si vous ne créez pas de bibliothèque de rasoirs ni de projet Web, vous n'avez généralement pas besoin de Microsoft.AspNetCore.App. Si vous pouvez vraiment vous assurer de ce que vous faites et en avez vraiment besoin, pensez à ajouter:

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

Mettre à jour le fichier de projet avec le correctif suivant pour moi:

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

Référence

0
mparkuk