4 votes

MvvmCross.Core/Platform 5.7.0' a été restauré en utilisant '.NETFramework,Version=v4.6.1' au lieu du framework cible du projet '.NETStandard,Version=v2.0'

Je crée une application Android et iOS en utilisant MvvmCross, la dernière version. Maintenant que la bibliothèque de classe portable est dépréciée, j'utilise la bibliothèque standard .NET version 2.0.

J'ai cet avertissement dans le paquet NuGet de MvvmCross ..... bien que le projet se compile mais je ne suis pas sûr de devoir m'en préoccuper car la dernière ligne dit

Il se peut que ce paquet ne soit pas entièrement compatible avec votre projet.

Voici l'avertissement exact

l'avertissement NU1701 : Le paquet 'MvvmCross.Core 5.7.0' a été restauré en utilisant '.NETFramework,Version=v4.6.1' au lieu du framework cible du projet '.NETStandard,Version=v2.0'. Ce paquetage peut ne pas être entièrement compatible avec votre projet.

Avertissement similaire pour MvvmCross.Platform 5.7.0

[ NuGet package warnings

7voto

Plac3Hold3r Points 3979

En tant que J.Dhaik a déjà mentionné que la version 5.7.0 de MvvmCross n'a pas encore été mise à jour pour prendre en charge .NET Standard. La prochaine version majeure, la version 6.0.0, ajoutera la prise en charge de .NET Standard 2.0.

L'utilisation des versions de MvvmCross antérieures à la version 6.0.0 à l'intérieur d'une bibliothèque de classe standard .NET est toutefois possible.

Pourquoi cet avertissement ?

Vous pouvez consulter l'explication que j'ai donnée à ce sujet Stack Overflow (en anglais) La question de la raison pour laquelle vous verriez l'avertissement. Extrait ci-dessous

Avec .NET Standard 2.0 et l'outil mis à jour dans .NET Core SDK 2+, l'équipe .NET a voulu faire en sorte qu'il n'y ait plus d'obstacles à l'utilisation de l'outil. NET a voulu faciliter la mise à jour ou l'utilisation de .NET Standard. Le problème est que tous les paquets NuGet n'ont pas été mis à jour pour prendre en charge une version de .NET Standard. Ils ont donc introduit un de repli ciblant .NET Framework 4.6.1, qui est presque 100 % conforme. avec .NET Standard (il y a quelques API qui sont dans la spécification .NET Standard 2.0 qui ne sont pas dans .NET Framework 4.6.1, mais elles peuvent être intégrées via des paquets NuGet si nécessaire). L'avertissement que vous voyez est donc vous informer que les paquets ne sont pas conformes à une version de .NET Standard que vous visez et qu'à ce titre, ils peuvent contenir des API qui ne sont pas exécutables dans vos runtimes utilisant votre bibliothèque .NET Standard 2.0. NET Standard 2.0.

Comment supprimer les avertissements

NuGet propose deux options, par paquet o niveau du projet .

Par paquet

Vous pouvez éditer votre csproj et ajouter NoWarn="NU1701" à votre référence de paquetage ou sélectionnez les propriétés de votre référence de paquetage NuGet (Explorateur de solutions > Dépendances > NuGet > {le nom du paquetage}, clic droit sur Propriétés) et ajoutez NU1701 à la NoWarn propriété.

VS 2017 - properties

Le résultat serait similaire à ce qui suit dans votre csproj

<ItemGroup>
  <PackageReference Include="MvvmCross" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Core" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Binding" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Platform" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.CodeAnalysis" Version="5.7.0" NoWarn="NU1701" />
</ItemGroup> 

Note Les avertissements relatifs aux paquets de dépendance ne sont pas supprimés par la suppression du paquet parent, ce qui n'est pas le cas avec l'approche par paquet. Il faut donc intégrer le paquet en tant que dépendance pour supprimer les avertissements.

Niveau du projet

NuGet vous donne également la possibilité de supprimer tous les NU1701 avertissements au niveau d'un projet. Vous pouvez le faire en éditant manuellement le csproj comme suit

<PropertyGroup>
  <NoWarn>NU1701</NoWarn>
</PropertyGroup>

Ou via l'interface graphique, vous pouvez modifier Suppress warnings pour inclure NU1701

VS 2019

2voto

J.Dhaik Points 61

Ce message d'erreur est simple, il signifie que MvmCross n'a pas encore été mis à jour vers net.standard.

Il s'agit d'une erreur courante avec les nuggets jusqu'à ce que Net.Standard soit largement adapté. Il existe cependant une solution dans ce cas.

https://www.mvvmcross.com/documentation/getting-started/netstandard

When using .NET Standard 2 you do not need to specify a package target fallback. In .NET Standard 2 the PackageTargetFallback flag has been deprecated and instead defaults to net461 (.NET Framework 4.6.1) or higher. If however, this does not suit your use case you can override this behaviour with the AssetTargetFallback.

<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

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