Dela via


NuGet kontra SDK som en projektreferens

Den här artikeln är utformad för att hjälpa utvecklare att välja om de vill paketera sin programvara som ett NuGet-paket eller som ett programutvecklingspaket (SDK). Mer specifikt diskuteras skillnaderna mellan de två när de refereras i ett Visual Studio-projekt.

  • NuGet är ett pakethanteringssystem med öppen källkod som förenklar processen med att införliva bibliotek i ett projekt. För .NET (inklusive .NET Core) är NuGet den Microsoft-stödda mekanismen för delningskod. NuGet definierar hur paket för .NET skapas, hanteras och används och tillhandahåller verktygen för var och en av dessa roller. I Visual Studio lägger du till NuGet-paket i ett projekt med hjälp av Package Manager användargränssnittet.

  • En SDK- är en samling filer som Visual Studio behandlar som ett enda referensobjekt. I dialogrutan Referenshanteraren i Visual Studio visas alla SDK:er som är relevanta för det aktuella projektet när du väljer Lägg till referens. När du lägger till en SDK i ett projekt kan du komma åt allt innehåll i SDK:t via IntelliSense, fönstret Verktygslåda, designers, Object Browser, MSBuild, distribution, felsökning och paketering.

Vilken mekanism ska jag använda?

I följande tabell kan du jämföra referensfunktionerna i ett SDK med referensfunktionerna i NuGet.

Funktion SDK-stöd SDK-anteckningar NuGet support NuGet-anteckningar
Mekanismen refererar till en entitet och sedan är alla filer och funktioner tillgängliga. Y Du lägger till en SDK med hjälp av dialogrutan Reference Manager och alla filer och funktioner är tillgängliga under arbetsflödet för utveckling. Y
MSBuild använder automatiskt sammansättningar och Windows-metadata (.winmd) filer. Y Referenser i SDK skickas automatiskt till kompilatorn. Y
MSBuild använder automatiskt .h- eller .lib-filerna. Y Filen SDKName.props anger för Visual Studio hur du konfigurerar katalogen Visual C++ och så vidare för automatisk .h eller .lib filförbrukning. N
MSBuild använder automatiskt .js- eller .css-filerna. Y I Solution Explorerkan du expandera JavaScript SDK-referensnoden för att visa enskilda .js- eller .css-filer och sedan generera <source include/> taggar genom att dra filerna till källfilerna. SDK har stöd för F5 och automatisk paketkonfiguration. Y
MSBuild lägger automatiskt till kontrollen i Toolbox-. Y Toolbox- kan använda SDK:er och visa kontroller på de flikar som du anger. N
Mekanismen stöder Visual Studio Installer för tillägg (VSIX). Y VSIX har ett särskilt manifest och logik för att skapa SDK-paket Y VSIX kan bäddas in i ett annat installationsprogram.
Object Browser räknar upp referenser. Y Object Browser hämtar automatiskt listan med referenser i SDK:er och räknar upp dem. N
Filer och länkar läggs automatiskt till i dialogrutan Reference Manager (hjälplänkar och så vidare fylls i automatiskt) Y Dialogrutan Reference Manager räknar automatiskt upp SDK:er, tillsammans med hjälplänkar och listan över SDK-beroenden. N NuGet innehåller en egen dialogruta Hantera NuGet-paket.
Mekanismen stöder flera arkitekturer. Y SDK:er kan leverera flera konfigurationer. MSBuild använder lämpliga filer för varje projektkonfiguration. N
Mekanismen stöder flera konfigurationer. Y SDK:er kan leverera flera konfigurationer. Beroende på projektarkitektur använder MSBuild lämpliga filer för varje projektarkitektur. N
Mekanismen kan ange "att inte kopiera". Y Beroende på om filer tas bort i mappen \redist eller \designtime kan du styra vilka filer som ska kopieras till det förbrukande programmets paket. N Du deklarerar vilka filer som ska kopieras i paketmanifestet.
Innehållet visas i lokaliserade filer. Y Lokaliserade XML-dokument i SDK:er ingår automatiskt för en bättre designtidsupplevelse. N
MSBuild stöder användning av flera versioner av ett SDK samtidigt. Y SDK stöder användning av flera versioner samtidigt. N Det här är ingen hänvisning. Du kan inte ha fler än en version av NuGet-filer i projektet i taget.
Mekanismen har stöd för att ange tillämpliga målramverk, Visual Studio-versioner och projekttyper. Y Dialogrutan Reference Manager och Toolbox endast visa de SDK:er som gäller för ett projekt, så att användarna enklare kan välja lämpliga SDK:er. Y (partiell) Pivot är målplattformen. Det finns ingen filtrering i användargränssnittet. Vid installationen kan det returnera ett fel.
Mekanismen har stöd för att ange registreringsinformation för inhemska WinMDs. Y Du kan ange korrelationen mellan .winmd-filen och .dll-filen i SDKManifest.xml. N
Mekanismen har stöd för att ange beroenden för andra SDK:er. Y SDK:et meddelar bara användaren. användaren måste fortfarande installera dem och referera till dem manuellt. Y NuGet hämtar dem automatiskt. användaren meddelas inte.
Mekanismen integreras med Microsoft Store-begrepp som appmanifest och Framework-ID. Y SDK:n måste skicka begrepp som är specifika för Store så att paketering och F5 fungerar korrekt med SDK:er som är tillgängliga i Store. N
Mekanismen integreras med appfelsökningspipelinen för Windows 8.x Store-appar. Y SDK:n måste skicka Store-specifika begrepp så att paketering och F5 fungerar rätt med SDK:er som är tillgängliga i Store. Y NuGet-innehåll blir en del av projektet. Ingen särskild F5-hänsyn krävs.
Mekanismen integreras med appmanifest. Y SDK:n måste skicka Store-specifika begrepp så att paketering och F5 fungerar rätt med SDK:er som är tillgängliga i Store. Y NuGet-innehåll blir en del av projektet. Ingen särskild F5-hänsyn krävs.
Mekanismen distribuerar icke-referensfiler (till exempel distribuera testramverk där du kan köra tester av Windows 8.x Store-appar). Y Om du släpper filerna i mappen \redist distribueras filerna automatiskt. Y
Mekanismen lägger automatiskt till plattforms-SDK:er i Visual Studio IDE. Y Om du släpper Windows 8 SDK eller Windows Phone SDK på en specifik plats med en specifik layout, integreras SDK automatiskt med alla Visual Studio-funktioner. N
Mekanismen stöder en ren utvecklardator. (Det vill: ingen installation krävs, och enkel hämtning från källkodskontrollen fungerar.) N Eftersom du refererar till ett SDK måste du checka in din lösning och SDK separat. Du kan checka in SDK:t från de två standardplatserna för icke-register som MSBuild itererar SDK:er från (mer information finns i Create a Software Development Kit). Alternativt kan du ange följande kod i projektfilen om en anpassad plats består av SDK:erna:

<PropertyGroup>
  <SDKReferenceDirectoryRoot>
  C:\MySDKs
  </SDKReferenceDirectoryRoot>
</PropertyGroup>

Kontrollera sedan SDK:erna på den platsen.
Y Du kan kolla in lösningen och Visual Studio identifierar och agerar direkt på filerna.
Du kan ansluta till en stor befintlig grupp med paketförfattare. Ej tillämpligt Samhället är nytt. Y
Du kan ansluta till en stor befintlig grupp med paketkonsumenter. Ej tillämpligt Samhället är nytt. Y
Du kan ansluta till ett ekosystem med partner (anpassade gallerier, lagringsplatser och så vidare). Ej tillämpligt Tillgängliga lagringsplatser är Visual Studio Marketplace, Microsoft Download Center och Microsoft Store. Y
Mekanismen integreras med byggservrar för kontinuerlig integration för både skapande och användning av paket. Y SDK:et måste skicka den incheckade platsen (egenskapen SDKReferenceDirectoryRoot) på kommandoraden till MSBuild. Y
Mekanismen stöder både stabila och förhandsversioner av paketversioner. Y SDK har stöd för att lägga till referenser till flera versioner. Y
Mekanismen stöder automatisk uppdatering för installerade paket. Y Om SDK levereras som VSIX eller en del av visual studio-automatiska uppdateringar, tillhandahåller SDK automatiska meddelanden. Y
Mekanismen innehåller en fristående .exe fil för att skapa och använda paket. Y SDK:et innehåller MSBuild.exe. Y
Paket kan läggas in i versionskontroll. Y Du kan inte checka in något utanför noden Dokument, vilket innebär att tilläggs-SDK:erna kanske inte är incheckade. Storleken på SDK för tillägg kan vara stor. Y
Du kan använda ett PowerShell-gränssnitt för att skapa och använda paket. Y (förbrukning), N (skapande) Inga verktyg för att skapa en SDK. Förbrukning kör MSBuild på kommandoraden. Y
Du kan använda ett symbolpaket för felsökningsstöd. Y Om du släpper .pdb-filer i SDK hämtas filerna automatiskt. Y
Mekanismen stöder automatiska uppdateringar av pakethanteraren. Ej tillämpligt SDK:et revideras med MSBuild. Y
Mekanismen stöder ett enkelt manifestformat. Y SDKManifest.xml stöder många attribut, men en liten delmängd är vanligtvis nödvändig. Y
Mekanismen är tillgänglig för alla Visual Studio-utgåvor. Y SDK stöder alla Visual Studio-utgåvor. Y NuGet stöder alla Visual Studio-utgåvor.