NuGet versus SDK als projectreferentie
Dit artikel is ontworpen om ontwikkelaars te helpen kiezen of ze hun software willen verpakken als een NuGet-pakket of als een Software Development Kit (SDK). In het bijzonder worden verschillen tussen de twee besproken wanneer ernaar wordt verwezen in een Visual Studio-project.
NuGet- is een opensource-pakketbeheersysteem dat het proces van het opnemen van bibliotheken in een project vereenvoudigt. Voor .NET (inclusief .NET Core) is NuGet het door Microsoft ondersteunde mechanisme voor het delen van code. NuGet definieert hoe pakketten voor .NET worden gemaakt, gehost en gebruikt en biedt de hulpprogramma's voor elk van deze rollen. In Visual Studio voegt u NuGet-pakketten toe aan een project met behulp van de Package Manager gebruikersinterface.
Een SDK- is een verzameling bestanden die In Visual Studio als één referentie-item worden behandeld. Het dialoogvenster Reference Manager in Visual Studio bevat alle SDK's die relevant zijn voor het huidige project wanneer u Verwijzing toevoegenkiest. Wanneer u een SDK toevoegt aan een project, hebt u toegang tot alle inhoud van die SDK via IntelliSense, het werksetvenster, ontwerpers, de objectbrowser, MSBuild, implementatie, foutopsporing en pakketten.
Welk mechanisme moet ik gebruiken?
In de volgende tabel kunt u de verwijzende functies van een SDK vergelijken met de verwijzende functies van NuGet.
Kenmerk | SDK-ondersteuning | SDK-notities | Ondersteuning voor NuGet | NuGet-notities |
---|---|---|---|---|
Het mechanisme verwijst naar één entiteit en vervolgens zijn alle bestanden en functionaliteit beschikbaar. | Y | U voegt een SDK toe met behulp van het dialoogvenster Reference Manager en alle bestanden en functionaliteit zijn beschikbaar tijdens de ontwikkelwerkstroom. | Y | |
MSBuild gebruikt automatisch assembly's en Windows-metagegevensbestanden (.winmd). | Y | Verwijzingen in de SDK worden automatisch doorgegeven aan de compiler. | Y | |
MSBuild gebruikt automatisch de .h- of .lib-bestanden. | Y | Het bestand SDKName.props vertelt Visual Studio hoe de Visual C++-map moet worden ingesteld, enzovoort, voor automatische .h of .lib bestandsverbruik. | N | |
MSBuild gebruikt automatisch de .js- of .css-bestanden. | Y | In Solution Explorer-kunt u het referentieknooppunt van de JavaScript SDK uitvouwen om afzonderlijke .js- of .css-bestanden weer te geven en vervolgens <source include/> tags genereren door deze bestanden naar hun bronbestanden te slepen. De SDK ondersteunt F5 en automatische pakketinstallatie. |
Y | |
MSBuild voegt automatisch het besturingselement toe in de Toolbox. | Y | De Toolbox kan SDK's gebruiken en besturingselementen weergeven op de tabbladen die u opgeeft. | N | |
Het mechanisme ondersteunt Visual Studio Installer voor extensies (VSIX). | Y | VSIX heeft een speciaal manifest en een speciale logica voor het maken van SDK-pakketten | Y | De VSIX kan worden ingesloten in een ander installatieprogramma. |
De Object Browser somt verwijzingen op. | Ja | De ObjectBrowser haalt automatisch de lijst met verwijzingen in SDK's op en inventariseert deze. | N | |
Bestanden en koppelingen worden automatisch toegevoegd aan het Reference Manager dialoogvenster (Help-koppelingen, enzovoort automatisch invullen) | Y | In het dialoogvenster Reference Manager worden SDK's automatisch opgesomd, samen met help-koppelingen en de lijst met SDK-afhankelijkheden. | N | NuGet biedt zijn eigen NuGet-pakketten beheren dialoogvenster. |
Het mechanisme ondersteunt meerdere architecturen. | Y | SDK's kunnen meerdere configuraties verzenden. MSBuild gebruikt de juiste bestanden voor elke projectconfiguratie. | N | |
Het mechanisme ondersteunt meerdere configuraties. | Y | SDK's kunnen meerdere configuraties verzenden. Afhankelijk van de projectarchitectuur gebruikt MSBuild de juiste bestanden voor elke projectarchitectuur. | N | |
Het mechanisme kan 'niet kopiëren' opgeven. | Y | Afhankelijk van of bestanden worden verwijderd in de map \r of \designtime map, kunt u bepalen welke bestanden moeten worden gekopieerd naar het pakket van de verbruikende toepassing. | N | U declareert welke bestanden u wilt kopiëren in het pakketmanifest. |
Inhoud wordt weergegeven in gelokaliseerde bestanden. | Y | Gelokaliseerde XML-documenten in SDK's worden automatisch opgenomen voor een betere ontwerptijdervaring. | N | |
MSBuild ondersteunt het gelijktijdig gebruiken van meerdere versies van een SDK. | Y | De SDK biedt ondersteuning voor het gelijktijdig gebruiken van meerdere versies. | N | Dit is geen verwijzing. U kunt niet meer dan één versie van NuGet-bestanden tegelijk in uw project hebben. |
Het mechanisme ondersteunt het opgeven van toepasselijke doelframeworks, Visual Studio-versies en projecttypen. | Y | Het dialoogvenster Reference Manager en de Werkset alleen de SDK's weergeven die van toepassing zijn op een project, zodat gebruikers gemakkelijker de juiste SDK's kunnen kiezen. | Y (gedeeltelijk) | Pivot is het doelgerichte framework. Er is geen filter op de gebruikersinterface. Tijdens de installatie kan er een fout optreden. |
Het mechanisme biedt ondersteuning voor het opgeven van registratiegegevens voor systeemeigen WinMD's. | Y | U kunt de correlatie opgeven tussen het .winmd-bestand en het .dll-bestand in SDKManifest.xml. | N | |
Het mechanisme ondersteunt het opgeven van afhankelijkheden op andere SDK's. | Y | De SDK meldt de gebruiker alleen; de gebruiker moet deze nog steeds installeren en er handmatig naar verwijzen. | Y | NuGet haalt ze automatisch op; de gebruiker wordt niet op de hoogte gesteld. |
Het mechanisme kan worden geïntegreerd met Microsoft Store-concepten, zoals app-manifest en Framework-id. | Y | De SDK moet concepten doorgeven die specifiek zijn voor de Store, zodat pakketten en F5 correct werken met SDK's die beschikbaar zijn in deStore. | N | |
Het mechanisme kan worden geïntegreerd met de app-foutopsporingspijplijn voor Windows 8.x Store-apps. | Y | De SDK moet store-specifieke concepten doorgeven, zodat pakketten en F5 correct werken met SDK's die beschikbaar zijn in de Store. | Y | NuGet-inhoud wordt onderdeel van het project. Er is geen speciale F5-overweging nodig. |
Het mechanisme kan worden geïntegreerd met app-manifesten. | Y | De SDK moet store-specifieke concepten doorgeven, zodat pakketten en F5 correct werken met SDK's die beschikbaar zijn in de Store. | Y | NuGet-inhoud wordt onderdeel van het project. Er is geen speciale F5-overweging nodig. |
Het mechanisme implementeert niet-referentiebestanden (bijvoorbeeld testframework implementeren waarop tests van Windows 8.x Store-apps moeten worden uitgevoerd). | Y | Als u de bestanden in de map \redist plaatst, worden de bestanden automatisch uitgerold. | Y | |
Het mechanisme voegt automatisch de platform-SDK's toe in Visual Studio IDE. | Y | Als u de Windows 8 SDK of de Windows Phone SDK op een specifieke locatie met een specifieke indeling neer zet, wordt de SDK automatisch geïntegreerd met alle Visual Studio-functies. | N | |
Het mechanisme ondersteunt een schone ontwikkelcomputer. (Dat wil zeggen, er is geen installatie vereist en eenvoudig ophalen van broncodecontrole werkt.) | N | Omdat u naar een SDK verwijst, moet u uw oplossing en de SDK afzonderlijk inchecken. U kunt de SDK inchecken vanaf de twee niet-register standaardlocaties van waaruit MSBuild SDK's itereert (zie Een Software Development Kit maken). Als een aangepaste locatie bestaat uit de SDK's, kunt u ook de volgende code opgeven in het projectbestand:<PropertyGroup> <SDKReferenceDirectoryRoot> C:\MySDKs </SDKReferenceDirectoryRoot> </PropertyGroup> Controleer vervolgens de SDK's op die locatie. |
Y | U kunt de oplossing bekijken en Visual Studio herkent en reageert onmiddellijk op de bestanden. |
U kunt deelnemen aan een grote bestaande community met pakketauteurs. | N.V.T | De gemeenschap is nieuw. | Y | |
U kunt deelnemen aan een grote bestaande community met pakketgebruikers. | N.V.T | De gemeenschap is nieuw. | Y | |
U kunt lid worden van een ecosysteem van partners (aangepaste galerieën, opslagplaatsen enzovoort). | N.V.T | De beschikbare opslagplaatsen zijn Onder andere Visual Studio Marketplace, Microsoft Downloadcentrum en Microsoft Store. | Y | |
Het mechanisme kan worden geïntegreerd met buildservers voor continue integratie voor zowel het maken als het verbruik van pakketten. | Y | De SDK moet de ingecheckte locatie (eigenschap SDKReferenceDirectoryRoot) doorgeven aan MSBuild. | Y | |
Het mechanisme ondersteunt zowel stabiele als voorlopige pakketversies. | Y | De SDK biedt ondersteuning voor het toevoegen van verwijzingen naar meerdere versies. | Y | |
Het mechanisme ondersteunt automatisch bijwerken voor geïnstalleerde pakketten. | Y | Als deze wordt verzonden als VSIX of onderdeel van automatische updates van Visual Studio, biedt SDK automatische meldingen. | Y | |
Het mechanisme bevat een zelfstandig .exe-bestand voor het maken en gebruiken van pakketten. | Y | De SDK bevat MSBuild.exe. | Y | |
Pakketten kunnen worden ingecheckt bij versiebeheer. | Y | U kunt niets inchecken buiten het knooppunt Documenten, wat betekent dat de Extensie-SDK's mogelijk niet worden ingecheckt. De grootte van de Extensie-SDK kan groot zijn. | Y | |
U kunt een PowerShell-interface gebruiken om pakketten te maken en te gebruiken. | Y (verbruik), N (maken) | Geen hulpprogramma's voor het maken van een SDK. Consumption voert MSBuild uit op de command line. | Y | |
U kunt een Symbool-pakket gebruiken voor foutopsporingsondersteuning. | Y | Als u .pdb bestanden in de SDK neerhaalt, worden de bestanden automatisch opgehaald. | Y | |
Het mechanisme ondersteunt automatische updates van Package Manager. | N.V.T | De SDK wordt herzien met MSBuild. | Y | |
Het mechanisme ondersteunt een lichtgewicht manifestindeling. | Y | SDKManifest.xml ondersteunt veel kenmerken, maar meestal is een kleine subset nodig. | Y | |
Het mechanisme is beschikbaar voor alle Visual Studio-edities. | Y | De SDK ondersteunt alle Visual Studio-edities. | Y | NuGet ondersteunt alle Visual Studio-edities. |