2 votes

Comment éviter les avertissements de compatibilité avec NuGet ?

Je suis en train de construire une application .NET Core 2.0 pour Linux. Voici les parties pertinentes du fichier de projet.

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>
</Project>

Je constate que le système de paquets ne se comporte pas très bien. J'ai le droit d'ajouter ce paquet . Je ne vois peut-être pas qu'il n'est compatible qu'avec .NET Framework 4.0.

PS> dotnet add package System.Net.Http.Formatting.Extension
  Writing C:\Users\anthony.mastrean\AppData\Local\Temp\tmp4823.tmp
info : Adding PackageReference for package 'System.Net.Http.Formatting.Extension' into project 'Example.csproj'.
log  : Restoring packages for Example.csproj...
warn : Package 'System.Net.Http.Formatting.Extension 5.2.3' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.0'. This package may not be fully compatible with your project.
info : Package 'System.Net.Http.Formatting.Extension' is compatible with all the specified frameworks in project 'Example.csproj'.
info : PackageReference for package 'System.Net.Http.Formatting.Extension' version '5.2.3.0' added to file 'Example.csproj'.

Quand je construis, c'est "réussi", mais avec un avertissement (coupé pour plus de clarté)...

PS> dotnet build
Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

...

Build succeeded.

Example.csproj : warning NU1701: Package 'System.Net.Http.Formatting.Extension 5.2.3' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.0'. This package may not be fully compatible with your project.
Example.csproj : warning NU1701: Package 'System.Net.Http.Formatting.Extension 5.2.3' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.0'. This package may not be fully compatible with your project.
    2 Warning(s)
    0 Error(s)

Time Elapsed 00:00:09.08

Quelques questions...

  • Pourquoi dotnet/nuget me permet-il d'ajouter ce paquet à un projet netcoreapp2.0 ?
  • Pourquoi ou comment puis-je empêcher que cela se produise ?

Je sais qu'il y a un paquet parfaitement adapté qui est compatible avec .NET Core 2.0 et qui offre les mêmes fonctionnalités. Je veux que cela échouer et d'échouer évidemment ! Je sais aussi que je ne peux pas "mettre à jour" un avertissement nuget en erreur (dommage).

4voto

Matt Ward Points 7456

NuGet traite les assemblages .NET 4.6.1 comme compatibles avec .NET Core 2.0 et .NET Standard 2.0, mais affiche un avertissement indiquant que si le paquet NuGet utilise des API natives, telles que WPF, votre application risque de ne pas fonctionner.

Vous pourriez activer les avertissements en tant qu'erreurs, ce qui ferait échouer la restauration pour les avertissements NU1701.

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
  </PropertyGroup>
</Project>

Ou simplement marquer l'avertissement NU1701 comme une erreur.

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <WarningsAsErrors>$(WarningsAsErrors);NU1701</WarningsAsErrors>
  </PropertyGroup>
</Project>

Malheureusement, cela n'empêche pas dotnet add package de ne pas ajouter le PackageReference mais la restauration échouera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X