0
votes

Comment décider des versions .NET Framework pour créer une bibliothèque

Je souhaite créer une bibliothèque à utiliser dans les applications Framework .NET et les applications xamarin. Mais il y a 3 versions-cadre:

  • .NET CORE
  • .NET Framework
  • .Net Standart

    Je ne pouvais donc pas décider quelle version utiliser ma bibliothèque commune.

    1. Si je crée une bibliothèque de standard .NET, fonctionne-t-elle dans la structure .NET et le noyau .NET.
    2. Si je crée une bibliothèque de base .NET, fonctionne-t-il dans la framework and .Net Standart.

      Je suis confus sur les cadres.


1 commentaires

Peut-être Ce aidera


3 Réponses :


1
votes

Comme vous écrivez une bibliothèque C #, j'imagine que vous connaissez la différence entre une classe et une interface. Une classe est une implémentation concrète d'un ensemble de fonctionnalités et une interface définit les fonctionnalités que vous pouvez attendre d'une instance qui l'applique.

Utiliser cela à titre d'exemple, .NET Framework et .NET CORE sont comme des classes. .NET Framework est la mise en œuvre "classique" et .NET CORE est une mise en œuvre récente qui présente des avantages, tels que la possibilité de fonctionner sous Linux. Si vous construisez une bibliothèque pour cible .NET CORET ou .NET .NET Framework, vous construisez à cibler une de ces implémentations concrètes.

.NET Standard d'autre part est comme une interface. Chaque version de .NET Standard fournit un ensemble de fonctionnalités et Différentes versions de .NET Framework / .NET CORE implémente différentes versions de la norme .NET . Lorsque vous construisez une bibliothèque qui cible une version donnée de la norme .NET, vous dites que vous pouvez prendre en charge toutes les implémentations concrètes de la colonne correspondante de cette table.

Décider quelle version de la norme .NET à la cible dépendra de la fonctionnalité dont vous avez besoin pour implémenter votre bibliothèque. Plus de fonctionnalités signifie généralement une version plus élevée et prenant en charge moins d'implémentations. Moins de fonctionnalités signifie une version inférieure et un support plus vaste.


0 commentaires

3
votes

Cela pourrait vous aider à décider

  1. .NET Standard: utilisé pour les bibliothèques de construction pouvant être référencés de toutes les implémentations .NET, telles que .NET Framework, .NET CORE et XAMARIN
  2. .NET CORE: utilisé pour la construction d'applications de console multi-plateforme et d'applications Web ASP.NET CORE et de services clouds.

    Ainsi, lorsque vous souhaitez que votre bibliothèque soit prise en charge par tous les types de mise en œuvre .NET ,.NET est la voie à suivre.


6 commentaires

Est-ce que les numéros de version comptent? Par exemple: La version XNT Standard X prend-elle en charge la version .NET Framework y?


.NET Standard Differez un ensemble d'API différent pour chaque version comme .NET Standard 2.0 avoir plus d'API que les versions précédentes. Chaque version est entièrement prise en charge dans les versions .NET Framework.


@Muhammadhannan: Chaque version est entièrement prise en charge dans les versions .NET Framework AAAAAAAAHH, doit faire attention à cette déclaration. Ceci n'est jusqu'ici vrai que pour les versions standard .NET actuellement publiées (1.0-1.6, 2.0). .NET Standard 2.1 sera le plus probable (aucune version finale publiée pour le moment, la décision peut donc changer) Ajouter une API qui ne sera pas compatible avec les versions (et probablement futures) de .NET Framework. Voir Annonce de la norme .NET 2.1 .


La raison de celle-ci est expliquée dans le blog (fondamentalement, le nouveau et plus d'API sont venus à .NET Standard 2.1) et .NET Framework ne les implera pas car les modifications nécessitent une quantité importante de travail. Sur le film de gestion .NET Framework pour ajouter un soutien à ceux-ci en raison du risque élevé de casser la compatibilité en arrière (puisque .NET Framework fonctionne sur plus d'un milliard de machines et ne prend pas en charge les roulements côte à côte, tels que .NET CORED)


@Tseng merci d'avoir mentionné cela. C'est pourquoi je n'ai mentionné que v2.0.


Bien la " chaque version " (plutôt que "jusqu'à la version 2.0") se lit différemment, c'est pourquoi j'ai ajouté le commentaire



1
votes

Tant de nombreuses réponses confondes ici.

Tout d'abord, cela dépend des quelles plateformes que vous ciblez.

  1. Est-ce une bibliothèque d'utilisation générique que vous voulez partager avec le monde?
  2. est-ce une bibliothèque spécifique à l'application (c'est-à-dire un code réutilisable pour la même application, c'est-à-dire une ligne d'application d'entreprise) qui doit être utilisée sur plusieurs plates-formes

    Case 1

    Vous devriez aller avec la norme .NET, puisqu'il vous donne la plus grande plateformes. Quelle version que vous utilisez dépend des fonctionnalités dont vous avez besoin.

    Si vous souhaitez atteindre la plupart des plates-formes, essayez de cibler aussi bas que possible (.NET Standard 1.0, il cible .NET CORE 1.0, .NET Framework 4.5, Mono, Xamarin iOS 10 / Mac 3.0 / Android 7.0, UWP 10 et UNIY 2018.1 et toutes les versions les plus récentes de ceux-ci).

    Vous pouvez voir exactement .NET Matrice standard dans la liaison fournie.

    Si vous avez besoin d'une API spécifique, vous devez cibler une version plus élevée, telle que .NET Standard 2.0 que beaucoup (~ 22K Nouvelles API de .NET a été porté à .NET Core 2.0 de. 1.1) API que la norme 1.NET 1.1.

    Cela peut ne pas vous permettre toutes les API (Aucun API spécifique WPF / Winform), mais en générique, utilisez des bibliothèques réutilisables, cela ne devrait pas être un problème.

    Case 2

    Ici, vous pouvez également appliquer Case 1 Astuces, si possible.

    Si cela ne couvre pas vos API requises et que vous savez que vous ne voulez pas que vous ne voulez pas cible .NET CORE ou UNITY, vous pouvez toujours utiliser l'ancien style PCLS: bibliothèque de classe portable .

    Ce sont des versions plus compliquées de la norme .NET (un peu prédécesseur de la norme .NET), où en fonction de la plate-forme que vous ciblez la surface de l'API se rétrécit pour permettre à des API d'être utilisées qui fonctionnent sur toutes ces plates-formes.

    Il n'est pas recommandé de ces jours pour utiliser PCLS, car .NET Standard est préférable et plus facile (pour les auteurs de la bibliothèque) d'utiliser et de cibler plusieurs plates-formes.

    Dernier point mais non le moindre, si vous avez vraiment besoin d'une fonctionnalité uniquement sur Windows et .NET Framework (ou vous ne vous souciez pas du noyau .NET), vous pouvez toujours croiser, c'est-à-dire une norme .NET 2.0 pour tous Platformes et ajoutez des API spécifiques uniquement à Net45 Instructions de la cible et du préprocesseur ( #if Net45 / #endif ).

    Ceci compile en deux bibliothèques, une pour NetStandard2.0 et un pour NET45 (.NET Framework 4.5).


0 commentaires