Freigeben über


NuGet im Vergleich zum SDK als Projektreferenz

Dieser Artikel soll Entwicklern helfen, auszuwählen, ob sie ihre Software als NuGet-Paket oder als Software Development Kit (SDK) verpacken möchten. Insbesondere werden Unterschiede zwischen den beiden erläutert, wenn in einem Visual Studio-Projekt darauf verwiesen wird.

  • NuGet ist ein Open-Source-Paketverwaltungssystem, das das Integrieren von Bibliotheken in ein Projekt vereinfacht. Für .NET (einschließlich .NET Core) ist NuGet der von Microsoft unterstützte Mechanismus zum Freigeben von Code. NuGet definiert, wie Pakete für .NET erstellt, gehostet und genutzt werden, und stellt die Tools für jede dieser Rollen bereit. In Visual Studio fügen Sie NuGet-Pakete zu einem Projekt mithilfe der Package Manager Benutzeroberfläche hinzu.

  • Ein SDK- ist eine Sammlung von Dateien, die Visual Studio als einzelnes Referenzelement behandelt. Das Dialogfeld "Verweis-Manager" in Visual Studio listet alle SDKs auf, die für das aktuelle Projekt relevant sind, wenn Sie Verweis hinzufügenauswählen. Wenn Sie einem Projekt ein SDK hinzufügen, können Sie über IntelliSense, das Toolboxfenster, Designer, den Objektbrowser, MSBuild, die Bereitstellung, das Debuggen und verpacken auf alle Inhalte dieses SDK zugreifen.

Welchen Mechanismus sollte ich verwenden?

In der folgenden Tabelle können Sie die referenzierenden Features eines SDK mit den referenzierenden Features von NuGet vergleichen.

Merkmal SDK-Unterstützung SDK-Hinweise NuGet-Unterstützung NuGet-Notizen
Der Mechanismus verweist auf eine Entität, und dann sind alle Dateien und Funktionen verfügbar. Y Sie fügen ein SDK mithilfe des Dialogfelds Verweis-Manager hinzu, und alle Dateien und Funktionen sind während des Entwicklungsworkflows verfügbar. Y
MSBuild verwendet automatisch Assemblys und Windows-Metadatendateien (WINMD-Dateien). Y Verweise im SDK werden automatisch an den Compiler übergeben. Y
MSBuild verwendet automatisch die .h- oder .lib-Dateien. Y Die SDKName.props-Datei teilt Visual Studio mit, wie das Visual C++-Verzeichnis usw. für automatischen H- oder LIB-Dateiverbrauch eingerichtet wird. N
MSBuild verwendet automatisch die .js- oder .css-Dateien. Y Im Lösungsexplorerkönnen Sie den JavaScript-SDK-Referenzknoten erweitern, um einzelne .js- oder .css-Dateien anzuzeigen und um <source include/>-Tags zu generieren, indem Sie diese Dateien in ihre Quelldateien ziehen. Das SDK unterstützt F5 und das automatische Paketsetup. Y
MSBuild fügt das Steuerelement automatisch in der Toolboxhinzu. Y Die Toolbox kann SDKs nutzen und Steuerelemente in den von Ihnen angegebenen Registerkarten anzeigen. N
Der Mechanismus unterstützt Visual Studio Installer für Erweiterungen (VSIX). Y VSIX verfügt über ein spezielles Manifest und eine spezielle Logik zum Erstellen von SDK-Paketen Y Das VSIX kann in ein anderes Setupprogramm eingebettet werden.
Der Objektbrowser zählt Verweise auf. Y Der Objektbrowser ruft automatisch die Liste der Verweise in SDKs ab und listet sie auf. N
Dateien und Links werden dem Dialogfeld Verweis-Manager automatisch hinzugefügt (Hilfelinks usw. werden automatisch aufgefüllt). Y Das Dialogfeld Verweis-Manager listet SDKs automatisch zusammen mit Hilfelinks und der Liste der SDK-Abhängigkeiten auf. N NuGet stellt ein eigenes Dialogfeld "NuGet-Pakete verwalten" bereit.
Der Mechanismus unterstützt mehrere Architekturen. Y SDKs können mehrere Konfigurationen versenden. MSBuild verwendet die entsprechenden Dateien für jede Projektkonfiguration. N
Der Mechanismus unterstützt mehrere Konfigurationen. Y SDKs können mehrere Konfigurationen versenden. Abhängig von der Projektarchitektur verwendet MSBuild die entsprechenden Dateien für jede Projektarchitektur. N
Der Mechanismus kann "nicht kopieren" angeben. Y Je nachdem, ob Dateien im \redist oder \designtime Ordner abgelegt werden, können Sie steuern, welche Dateien in das Paket der verbrauchenden Anwendung kopiert werden sollen. N Sie deklarieren, welche Dateien im Paketmanifest kopiert werden sollen.
Inhalt wird in lokalisierten Dateien angezeigt. Y Lokalisierte XML-Dokumenten werden automatisch in die SDKs integriert, um die Entwurfszeitumgebung zu verbessern. N
MSBuild unterstützt die gleichzeitige Verwendung mehrerer Versionen eines SDK. Y Das SDK unterstützt die gleichzeitige Nutzung mehrerer Versionen. N Das ist keine Referenz. Sie können nicht mehr als eine Version von NuGet-Dateien in Ihrem Projekt gleichzeitig verwenden.
Der Mechanismus unterstützt die Angabe anwendbarer Zielframeworks, Visual Studio-Versionen und Projekttypen. Y Im Dialogfeld Verweis-Manager und in der Toolbox werden nur die SDKs angezeigt, die für ein Projekt gelten, sodass Benutzer die entsprechenden SDKs einfacher auswählen können. Y (teilweise) „Pivot“ ist das Zielframework. Es gibt keine Filterung auf der Benutzeroberfläche. Bei der Installation wird möglicherweise ein Fehler zurückgegeben.
Der Mechanismus unterstützt die Angabe von Registrierungsinformationen für systemeigene WinMDs. Y Sie können die Korrelation zwischen der WINMD-Datei und der .dll Datei in SDKManifest.xmlangeben. N
Der Mechanismus unterstützt die Angabe von Abhängigkeiten von anderen SDKs. Y Das SDK benachrichtigt den Benutzer nur; der Benutzer muss sie weiterhin installieren und manuell darauf verweisen. Y NuGet zieht sie automatisch; und der Benutzer wird nicht benachrichtigt.
Der Mechanismus lässt sich in Microsoft Store-Konzepte wie App-Manifest und Framework-ID integrieren. Y Das SDK muss Konzepte übergeben, die für den Store spezifisch sind, damit das Verpacken und die F5-Funktion mit SDKs, die im Store verfügbar sind, ordnungsgemäß funktionieren. N
Der Mechanismus ist in die App-Debuggingpipeline für Windows 8.x Store-Apps integriert. Y Das SDK muss storespezifische Konzepte übergeben, damit das Verpacken und die F5-Funktion mit den im Store verfügbaren SDKs ordnungsgemäß funktionieren. Y NuGet-Inhalt wird Teil des Projekts. F5 muss nicht speziell berücksichtigt werden.
Der Mechanismus ist in App-Manifeste integriert. Y Das SDK muss storespezifische Konzepte übergeben, damit das Verpacken und die F5-Funktion mit den im Store verfügbaren SDKs ordnungsgemäß funktionieren. Y NuGet-Inhalt wird Teil des Projekts. F5 muss nicht speziell berücksichtigt werden.
Der Mechanismus stellt Dateien ohne Verweis bereit (stellen Sie z. B. ein Testframework zum Ausführen von Tests von Windows 8.x-Store-Apps bereit). Y Wenn Sie die Dateien im \redist Ordner ablegen, werden die Dateien automatisch bereitgestellt. Y
Der Mechanismus fügt automatisch die Plattform-SDKs in Visual Studio IDE hinzu. Y Wenn Sie das Windows 8 SDK oder das Windows Phone SDK an einem bestimmten Speicherort mit einem bestimmten Layout ablegen, wird das SDK automatisch in alle Visual Studio-Features integriert. N
Der Mechanismus unterstützt einen sauberen Entwicklercomputer. (Das heißt, es ist keine Installation erforderlich, und der einfache Abruf aus der Quellcodeverwaltung funktioniert.) N Da Sie auf ein SDK verweisen, müssen Sie Ihre Lösung und das SDK separat einchecken. Sie können das SDK von den zwei Nichtregistrierungs-Standardspeicherorten einchecken, die MSBuild beim Durchlaufen der SDKs verwendet (Details finden Sie unter Erstellen eines Software Development Kit). Wenn ein benutzerdefinierter Speicherort aus den SDKs besteht, können Sie alternativ den folgenden Code in der Projektdatei angeben:

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

Checken Sie die SDKs dann in diesen Speicherort ein.
Y Sie können die Lösung auschecken und Visual Studio erkennt die Dateien sofort und reagiert darauf.
Sie können einer großen Community von Paketautoren beitreten. N/A Die Community ist neu. Y
Sie können einer großen Community von Paketkunden beitreten. N/A Die Community ist neu. Y
Sie können einem Ökosystem von Partnern beitreten (benutzerdefinierte Kataloge, Repositorys usw.). N/A Die verfügbaren Repositorys umfassen Visual Studio Marketplace, Microsoft Download Center und Microsoft Store. Y
Der Mechanismus wird in Server mit fortlaufenden Integrationsbuilds sowohl für die Paketerstellung als auch den Paketverbrauch integriert. Y Das SDK muss den eingecheckten Speicherort (SDKReferenceDirectoryRoot-Eigenschaft) in der Befehlszeile an MSBuild übergeben. Y
Der Mechanismus unterstützt sowohl stabile als auch vorab veröffentlichte Paketversionen. Y Das SDK unterstützt das Hinzufügen von Verweisen auf mehrere Versionen. Y
Der Mechanismus unterstützt das automatische Update für installierte Pakete. Y Wenn das SDK als VSIX oder Teil von automatischen Visual Studio-Updates ausgeliefert wird, werden automatische Benachrichtigungen vom SDK bereitgestellt. Y
Der Mechanismus enthält eine eigenständige .exe Datei zum Erstellen und Verwenden von Paketen. Y Das SDK enthält MSBuild.exe. Y
Pakete können in die Versionskontrolle übertragen werden. Y Sie können nichts außerhalb des Knotens "Dokumente" einchecken, was bedeutet, dass die Erweiterungs-SDKs möglicherweise nicht eingecheckt sind. Die Größe des Erweiterungs-SDK kann groß sein. Y
Sie können eine PowerShell-Schnittstelle verwenden, um Pakete zu erstellen und zu nutzen. Y (Verbrauch), N (Erstellung) Kein Tool zum Erstellen eines SDK. Durch den Verbrauch wird MSBuild in der Befehlszeile ausgeführt. Y
Sie können ein Symbolpaket für die Debuggingunterstützung verwenden. Y Wenn Sie .pdb Dateien im SDK ablegen, werden die Dateien automatisch erkannt. Y
Der Mechanismus unterstützt automatische Updates des Paket-Managers. N/A Das SDK wird mit MSBuild überarbeitet. Y
Der Mechanismus unterstützt ein einfaches Manifestformat. Y SDKManifest.xml unterstützt viele Attribute, aber in der Regel ist eine kleine Teilmenge erforderlich. Y
Der Mechanismus ist für alle Visual Studio-Editionen verfügbar. Y Das SDK unterstützt alle Visual Studio-Editionen. Y NuGet unterstützt alle Visual Studio-Editionen.