Je souhaite créer une bibliothèque à utiliser dans les applications Framework .NET et les applications xamarin. Mais il y a 3 versions-cadre: p>
Je ne pouvais donc pas décider quelle version utiliser ma bibliothèque commune. P>
Je suis confus sur les cadres. P>
3 Réponses :
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. P>
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. P>
.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. P>
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. P>
Cela pourrait vous aider à décider p>
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. P>
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 i> 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
@Tseng merci d'avoir mentionné cela. C'est pourquoi je n'ai mentionné que v2.0.
Bien la " chaque version b>" (plutôt que "jusqu'à la version 2.0") se lit différemment, c'est pourquoi j'ai ajouté le commentaire
Tant de nombreuses réponses confondes ici. P>
Tout d'abord, cela dépend des quelles plateformes que vous ciblez. P>
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. P>
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). P>
Vous pouvez voir exactement .NET Matrice standard dans la liaison fournie. P>
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 STRAND> (~ 22K Nouvelles API de .NET a été porté à .NET Core 2.0 de. 1.1) API que la norme 1.NET 1.1. P>
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. P>
Ici, vous pouvez également appliquer Case 1 Strong> Astuces, si possible. P>
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 . p>
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. p>
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. P>
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 à Ceci compile en deux bibliothèques, une pour Case 2 h3>
Net45 Code> Instructions de la cible et du préprocesseur (
#if Net45 CODE> /
#endif code>). P>
NetStandard2.0 code> et un pour
NET45 code> (.NET Framework 4.5). P>
Peut-être Ce aidera