4
votes

Puis-je mettre à jour vers les packages NuGet .Net 5 même si j'utilise .Net Core 3.1?

Je cherchais des mises à jour NuGet sur mes bibliothèques de projet. Je vois qu'il existe de nombreuses mises à jour de bibliothèques Microsoft vers la v5.0.0.

entrez la description de l'image ici

D'après mes connaissances, je pense que ce sont de nouvelles dépendances publiées avec .Net 5.0 et je ne suis pas sûr de pouvoir mettre à jour ces bibliothèques vers la dernière version à l'aide du projet .Net Core 3.1.

Puis-je mettre à jour vers les bibliothèques v5.0.0 même si j'utilise / construis un projet .Net Core 3.1?


8 commentaires

Je suis vraiment intéressé par les votes négatifs


Si vous avez déjà un contrôle de source en place (comme Git), une expérience peut tout vous dire.


Mais cela ne me garantit pas que c'est une preuve de production à 100%. La documentation Microsoft n'explique rien à ce sujet


Rien? docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-5.0/… EF Core 5 prend officiellement en charge .NET Core 3.1 (bien que Microsoft devrait mettre à jour cette page pour la rendre plus claire).


Merci @Lez Li, je n'ai pas pu trouver cette page et je suis d'accord avec vous sur le fait que cela peut être plus clair. Quoi qu'il en soit, cela répond partiellement à ma question qui ne concerne pas uniquement EF Core. Qu'en est-il des autres bibliothèques système? Je pense que Microsoft peut être plus clair sur ce sujet, car à mon avis, il est tout aussi important pour les développeurs qui n'ont besoin de mettre à jour que les packages après la version .net 5.


Pour les packages Microsoft uniquement, si quelque chose est .NET 5 uniquement, ils doivent cibler uniquement net5 au lieu de netstandard2.1 (que .NET Core 3.1 peut consommer). Bien que Microsoft ait besoin de plus de précisions, je pense que nous avons déjà quelques indices.


J'ai quelques projets Net 4.8 qui utilisent les mêmes bibliothèques communes que j'utilise pour Net Core. Ainsi, ces bibliothèques communes sont ciblées sur netstandard2.0. et ne peut pas les changer en Net5 maintenant. Mais ils fonctionnent bien avec les deux.


Je voudrais penser que vous pouvez traiter ces mises à jour comme n'importe quelle autre mise à jour de package NuGet. Soyez prudent cependant, car la gestion des versions sémantique indique qu'un changement du numéro de version majeur peut introduire des changements de rupture. Par exemple, si un tel paquet ne dépend que de .net standard 2.0, alors il est parfaitement raisonnable d'utiliser le paquet dans net48. Si la mise à jour du package est vraiment interrompue de telle sorte que vous ne pouvez plus l'utiliser dans net48, alors le package devrait avoir abandonné la prise en charge de net standard 2.0.


3 Réponses :


1
votes

Je viens de terminer la même chose. J'avais une application de base 3.1 avec beaucoup de projets de bibliothèques 3.1 et NET Standard2.0 et je viens de mettre à jour toutes ces bibliothèques vers la version 5. Toutes les bibliothèques fonctionnaient bien, je pouvais les compiler. Mais je n'ai pas pu compiler mon application Web principale. Cela a commencé à donner d'étranges erreurs dont certains membres du personnel ont besoin .net5. Peut-être que cela pourrait être corrigé mais je ne voyais pas beaucoup de sens à perdre mon temps puisque de toute façon je prévoyais de passer à net5 dans quelques jours. J'ai donc décidé de passer immédiatement à net5. J'avais installé le SDK net 5.0 et changé le cadre cible de mon application en net5.0. Maintenant, tout fonctionne bien et je suis satisfait de mon application net5.0. J'ai quelques projets Net 4.8 qui utilisent les mêmes bibliothèques communes que j'utilise pour Net Core. Ainsi, ces bibliothèques communes sont ciblées sur netstandard2.0. et ne peut pas les changer en Net5. Maintenant, tous ces projets Standard2.0 fonctionnent toujours avec mon application web net5.0 sans aucun problème. Comme je n'ai eu aucun problème avec ma version précédente 3.1.9, JE NE RECOMMANDE PAS de mettre à jour les bibliothèques vers la version 5.0 si VOUS NE PRÉVOYEZ PAS de déplacer votre application vers Net5.0. Vous pouvez avoir plus de problèmes après cela, vous pouvez bénéficier de cette mise à jour.


2 commentaires

"Mais je n'ai pas pu compiler mon application Web principale. Cela a commencé à donner d'étranges erreurs dont certains membres du personnel ont besoin .net5." Cela nécessite de creuser davantage et peut être causé par autre chose.


Cela a fonctionné bien avant de le mettre à jour. Vous avez raison, peut-être que cela pourrait être corrigé, mais je ne voyais pas beaucoup de sens de perdre mon temps car je prévoyais de passer à net5 dans quelques jours. Je viens de déménager immédiatement. Et comme je n'ai eu aucun problème avec ma précédente version 3.1.9. Donc, je ne vois pas beaucoup de sens pour déplacer les bibliothèques vers 5.0 et passer beaucoup de temps à le réparer, si je ne gagne rien avec cela.



1
votes

Malheureusement, vous ne pouvez pas mettre à jour plusieurs de ces derniers packages Nuget vers la version 5.0. La raison en est que les dernières versions de packages Nuget sont écrites principalement pour .NET 5, et souvent Nuget Package Manager vous empêchera même de les installer car il existe des différences dans les API. Cela dit, il peut y avoir quelques endroits où cela permettra l'installation, mais je ne le recommanderais pas si vous prévoyez de conserver l'application sur .NET Core 3.1. Très probablement, cela pourrait provoquer des incohérences qui seraient difficiles à déboguer. Procédez avec prudence ou mettez à niveau vos projets vers .NET 5.


2 commentaires

Malheureusement, les packages ciblant .NET Standard 2.1 peuvent être utilisés par les projets .NET Core 3.1 et Microsoft ne les bloquera pas. Avec des mots officiels comme docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-5.0/ ... il est également clair que .NET Core 3.1 peut utiliser certains nouveaux packages (sinon tous) . Je conviens que la prudence est recommandée, mais «écrit explicitement pour .NET 5» n'est pas vrai.


A apporté une modification au commentaire. Ils sont écrits principalement pour .NET 5, les autres frameworks cibles étant au second plan. J'espère que c'est mieux dit.



0
votes

Vous devez signaler ces (VS pour Mac et VS pour Windows) comme des défauts de produit à Microsoft, car la plupart des nouveaux packages 5.0 ciblent uniquement net5 et ne s'appliquent pas à netcoreapp3.1 .

Essayez d'utiliser outdated outil outdated pour vérifier les mises à jour des packages, ce qui est beaucoup plus fiable,

https://github.com/dotnet-outdated/dotnet-outdated


0 commentaires