NuGet et SDK comme référence de projet
Cet article est conçu pour aider les développeurs à choisir de empaqueter leur logiciel en tant que package NuGet ou en tant que kit de développement logiciel (SDK). Plus précisément, il décrit les différences entre les deux lorsqu’elles sont référencées dans un projet Visual Studio.
NuGet est un système de gestion de package open source qui simplifie le processus d’incorporation de bibliothèques dans un projet. Pour .NET (y compris .NET Core), NuGet est le mécanisme pris en charge par Microsoft pour le partage de code. NuGet définit la façon dont les packages pour .NET sont créés, hébergés et consommés et fournissent les outils pour chacun de ces rôles. Dans Visual Studio, vous ajoutez des packages NuGet à un projet à l’aide de l’interface utilisateur gestionnaire de package.
Un SDK est une collection de fichiers que Visual Studio traite comme un élément de référence unique. La boîte de dialogue Gestionnaire de références dans Visual Studio répertorie tous les kits SDK pertinents pour le projet actuel lorsque vous choisissez Ajouter une référence. Lorsque vous ajoutez un SDK à un projet, vous pouvez accéder à tout le contenu de ce SDK via IntelliSense, la fenêtre Boîte à outils, les concepteurs, l’Explorateur d’objets, MSBuild, le déploiement, le débogage et l’empaquetage.
Quel mécanisme dois-je utiliser ?
Le tableau suivant vous aide à comparer les fonctionnalités de référencement d’un SDK aux fonctionnalités de référencement de NuGet.
Caractéristique | Prise en charge du kit de développement logiciel (SDK) | Notes du KIT DE DÉVELOPPEMENT logiciel (SDK | Prise en charge de NuGet | NuGet Remarques |
---|---|---|---|---|
Le mécanisme fait référence à une entité, puis tous les fichiers et fonctionnalités sont disponibles. | Y | Vous ajoutez un SDK à l’aide de la boîte de dialogue Gestionnaire de références, et tous les fichiers et fonctionnalités sont disponibles pendant le flux de travail de développement. | Y | |
MSBuild consomme automatiquement les assemblys et les fichiers de métadonnées Windows (.winmd). | Y | Les références dans le Kit de développement logiciel (SDK) sont automatiquement transmises au compilateur. | Y | |
MSBuild consomme automatiquement les fichiers .h ou .lib. | Y | Le fichier SDKName.props indique à Visual Studio comment configurer le répertoire Visual C++, et ainsi de suite, pour la consommation automatique de fichiers .h ou .lib. | N | |
MSBuild consomme automatiquement les fichiers .js ou .css. | Y | Dans Explorateur de solutions, vous pouvez développer le nœud de référence du Kit de développement logiciel (SDK) JavaScript pour afficher des fichiers individuels .js ou .css, puis générer des balises <source include/> en faisant glisser ces fichiers vers leurs fichiers sources. Le Kit de développement logiciel (SDK) prend en charge F5 et la configuration automatique des paquets. |
Y | |
MSBuild ajoute automatiquement le contrôle dans la boîte à outils . | Y | La boîte à outils peut consommer des kits SDK et afficher des contrôles dans les onglets que vous spécifiez. | N | |
Le mécanisme prend en charge Visual Studio Installer pour les extensions (VSIX). | Y | VSIX a un manifeste et une logique spéciaux pour créer des packages sdk | Y | VsIX peut être incorporé dans un autre programme d’installation. |
L’explorateur d’objets énumère les références. | Y | L’explorateur d’objets obtient automatiquement la liste des références dans les kits SDK et les énumère. | N | |
Les fichiers et les liens sont automatiquement ajoutés à la boîte de dialogue Gestionnaire de références (les liens d’aide et d'autres éléments similaires se remplissent automatiquement). | Y | La boîte de dialogue Gestionnaire de références énumère automatiquement les kits SDK, ainsi que les liens d’aide et la liste des dépendances du Kit de développement logiciel (SDK). | N | NuGet fournit sa propre boîte de dialogue Gérer les packages NuGet. |
Le mécanisme prend en charge plusieurs architectures. | Y | Les kits SDK peuvent expédier plusieurs configurations. MSBuild consomme les fichiers appropriés pour chaque configuration de projet. | N | |
Le mécanisme prend en charge plusieurs configurations. | Y | Les kits SDK peuvent expédier plusieurs configurations. En fonction de l’architecture du projet, MSBuild consomme les fichiers appropriés pour chaque architecture de projet. | N | |
Le mécanisme peut spécifier « ne pas copier ». | Y | Selon que les fichiers sont déposés dans le dossier \redist ou le dossier \designtime, vous pouvez contrôler quels fichiers copier dans le package de l'application consommatrice. | N | Vous déclarez les fichiers à copier dans le manifeste du package. |
Le contenu apparaît dans les fichiers localisés. | Y | Les documents XML localisés dans les kits SDK sont automatiquement inclus pour une meilleure expérience au moment du design. | N | |
MSBuild prend en charge l’utilisation simultanée de plusieurs versions d’un SDK. | Y | Le Kit de développement logiciel (SDK) prend en charge l’utilisation simultanée de plusieurs versions. | N | Cela ne constitue pas une référence. Vous ne pouvez pas avoir plusieurs versions de fichiers NuGet dans votre projet à la fois. |
Le mécanisme prend en charge la spécification des frameworks cibles applicables, des versions de Visual Studio et des types de projet. | Y | La boîte de dialogue Gestionnaire de références et la boîte à outils afficher uniquement les kits SDK qui s’appliquent à un projet, afin que les utilisateurs puissent choisir plus facilement les kits SDK appropriés. | Y (en partie) | Pivot est le framework cible. Il n’existe aucun filtrage sur l’interface utilisateur. Au moment de l’installation, une erreur peut être retournée. |
Le mécanisme prend en charge la spécification des informations d’inscription pour les WinMD natifs. | Y | Vous pouvez spécifier la corrélation entre le fichier .winmd et le fichier .dll dans SDKManifest.xml. | N | |
Le mécanisme prend en charge la spécification de dépendances sur d’autres kits SDK. | Y | Le Kit de développement logiciel (SDK) avertit uniquement l’utilisateur ; l’utilisateur doit toujours les installer et les référencer manuellement. | Y | NuGet les extrait automatiquement ; l’utilisateur n’est pas averti. |
Le mécanisme s’intègre aux concepts du Microsoft Store, tels que le manifeste de l’application et l’ID d’infrastructure. | Y | Le Kit de développement logiciel (SDK) doit transmettre des concepts spécifiques au Store afin que l’empaquetage et la fonctionnalité F5 fonctionnent correctement avec les SDK disponibles dans le Store. | N | |
Le mécanisme s’intègre au pipeline de débogage d’application pour les applications du Windows 8.x Store. | Y | Le Kit de développement logiciel (SDK) doit transmettre des concepts spécifiques au Windows Store afin que l’empaquetage et la F5 fonctionnent correctement avec les kits SDK disponibles dans le Windows Store. | Y | Le contenu NuGet fait partie du projet. Aucune considération F5 particulière n’est nécessaire. |
Le mécanisme s’intègre aux manifestes d’application. | Y | Le Kit de développement logiciel (SDK) doit transmettre des concepts spécifiques au Windows Store afin que l’empaquetage et la F5 fonctionnent correctement avec les kits SDK disponibles dans le Windows Store. | Y | Le contenu NuGet fait partie du projet. Aucune considération F5 particulière n’est nécessaire. |
Le mécanisme déploie des fichiers non de référence (par exemple, déployez l’infrastructure de test sur laquelle exécuter des tests d’applications Windows 8.x Store). | Y | Si vous supprimez les fichiers dans le dossier \redist, les fichiers sont automatiquement déployés. | Y | |
Le mécanisme ajoute automatiquement les kits SDK de plateforme dans l’IDE Visual Studio. | Y | Si vous supprimez le Kit de développement logiciel (SDK) Windows 8 ou le Kit de développement logiciel (SDK) Windows Phone dans un emplacement spécifique avec une disposition spécifique, le Kit de développement logiciel (SDK) est automatiquement intégré à toutes les fonctionnalités de Visual Studio. | N | |
Le mécanisme prend en charge une machine de développement propre. (Autrement dit, aucune installation n’est requise et une récupération simple à partir du contrôle de code source fonctionnera.) | N | Étant donné que vous référencez un SDK, vous devez archiver votre solution et le Kit de développement logiciel (SDK) séparément. Vous pouvez consulter le Kit de développement logiciel (SDK) à partir des deux emplacements par défaut non-registre à partir desquels MSBuild itère les kits SDK (pour plus d’informations, consultez Création d’un kit de développement logiciel). En guise d’alternative, si un emplacement personnalisé se compose des kits SDK, vous pouvez spécifier le code suivant dans le fichier projet :<PropertyGroup> <SDKReferenceDirectoryRoot> C:\MySDKs </SDKReferenceDirectoryRoot> </PropertyGroup> Ensuite, archivez les kits de développement logiciel (SDK) à cet emplacement. |
Y | Vous pouvez consulter la solution, et Visual Studio reconnaît et agit immédiatement sur les fichiers. |
Vous pouvez rejoindre une grande communauté existante d’auteurs de packages. | N/A | La communauté est nouvelle. | Y | |
Vous pouvez rejoindre une grande communauté existante de consommateurs de packages. | N/A | La communauté est nouvelle. | Y | |
Vous pouvez rejoindre un écosystème de partenaires (galeries personnalisées, dépôts, etc.). | N/A | Les référentiels disponibles incluent Visual Studio Marketplace, le Centre de téléchargement Microsoft et le Microsoft Store. | Y | |
Le mécanisme s’intègre aux serveurs de build d’intégration continue pour la création et la consommation de packages. | Y | Le kit SDK doit passer l’emplacement archivé (propriété SDKReferenceDirectoryRoot) sur la ligne de commande à MSBuild. | Y | |
Le mécanisme prend en charge les versions de package stables et en préversion. | Y | Le Kit de développement logiciel (SDK) prend en charge l’ajout de références à plusieurs versions. | Y | |
Le mécanisme prend en charge la mise à jour automatique pour les packages installés. | Y | S’il est fourni en tant que VSIX ou une partie des mises à jour automatiques de Visual Studio, le KIT DE développement logiciel (SDK) fournit des notifications automatiques. | Y | |
Le mécanisme contient un fichier .exe autonome pour créer et consommer des packages. | Y | Le Kit de développement logiciel (SDK) contient MSBuild.exe. | Y | |
Les packages peuvent être archivés dans la gestion de version. | Oui | Vous ne pouvez rien archiver en dehors du nœud Documents, ce qui signifie que les kits de développement logiciel (SDK) d’extension ne peuvent pas être archivés. La taille du Kit de développement logiciel (SDK) d’extension peut être importante. | Y | |
Vous pouvez utiliser une interface PowerShell pour créer et consommer des packages. | Y (consommation), N (création) | Aucun outil pour la création d’un Kit de développement logiciel (SDK). La consommation exécute MSBuild sur la ligne de commande. | Y | |
Vous pouvez utiliser un package de symbole pour la prise en charge du débogage. | Y | Si vous déposez des fichiers .pdb dans le kit de développement logiciel (SDK), ceux-ci sont récupérés automatiquement. | Y | |
Le mécanisme prend en charge les mises à jour automatiques du gestionnaire de package. | N/A | Le Kit de développement logiciel (SDK) est révisé avec MSBuild. | Y | |
Le mécanisme prend en charge un format manifeste léger. | Y | SDKManifest.xml prend en charge de nombreux attributs, mais un petit sous-ensemble est généralement nécessaire. | Y | |
Le mécanisme est disponible pour toutes les éditions de Visual Studio. | Y | Le Kit de développement logiciel (SDK) prend en charge toutes les éditions de Visual Studio. | Y | NuGet prend en charge toutes les éditions de Visual Studio. |