Udostępnij za pośrednictwem


NuGet kontra zestaw SDK jako odniesienie w projekcie

Ten artykuł ma pomóc deweloperom zdecydować, czy opublikować swoje oprogramowanie jako pakiet NuGet, czy jako zestaw SDK (zestaw do tworzenia oprogramowania). W szczególności omówiono różnice między nimi, gdy są przywoływane w projekcie programu Visual Studio.

  • NuGet to system zarządzania pakietami typu open source, który upraszcza proces dołączania bibliotek do projektu. W przypadku platformy .NET (w tym platformy .NET Core) pakiet NuGet jest obsługiwanym przez firmę Microsoft mechanizmem udostępniania kodu. NuGet definiuje sposób tworzenia, hostowania i korzystania z pakietów platformy .NET oraz udostępnia narzędzia dla każdej z tych ról. W programie Visual Studio dodasz pakiety NuGet do projektu przy użyciu interfejsu użytkownika Package Manager.

  • Zestaw SDK to kolekcja plików, które program Visual Studio traktuje jako pojedynczy element referencyjny. Okno dialogowe Menedżer odwołań w programie Visual Studio zawiera listę wszystkich zestawów SDK, które są istotne dla bieżącego projektu po wybraniu opcji Dodaj odwołanie. Po dodaniu zestawu SDK do projektu można uzyskać dostęp do całej zawartości tego zestawu SDK za pomocą funkcji IntelliSense, okna przybornika, projektantów, przeglądarki obiektów, programu MSBuild, wdrożenia, debugowania i pakowania.

Którego mechanizmu należy użyć?

W poniższej tabeli przedstawiono porównanie funkcji odwołująjących się do zestawu SDK z funkcjami odwołującymi się do pakietu NuGet.

Funkcja Obsługa zestawu SDK Uwagi dotyczące zestawu SDK Wsparcie NuGet Uwagi narzędzia NuGet
Mechanizm odwołuje się do jednej jednostki, a następnie są dostępne wszystkie pliki i funkcje. Y Zestaw SDK można dodać przy użyciu okna dialogowego Reference Manager, a wszystkie pliki i funkcje są dostępne w przepływie pracy programowania. Y
MSBuild automatycznie korzysta z bibliotek i plików metadanych systemu Windows (.winmd). Y W zestawie SDK odwołania są automatycznie przekazywane do kompilatora. Y
Program MSBuild automatycznie używa plików .h lub .lib. Y Plik SDKName.props informuje program Visual Studio, jak skonfigurować katalog Visual C++, a tak dalej, w przypadku automatycznego użycia plików .h lub .lib. N
Program MSBuild automatycznie używa plików .js lub .css. Y W eksploratorze rozwiązań można rozwinąć węzeł referencyjny zestawu SDK języka JavaScript, aby wyświetlić poszczególne pliki .js lub .css, a następnie wygenerować tagi <source include/>, przeciągając te pliki do plików źródłowych. Zestaw SDK obsługuje F5 oraz automatyczne tworzenie pakietów. Y
Program MSBuild automatycznie dodaje kontrolkę w przyborniku . Y Przybornik może korzystać z zestawów SDK i wyświetlać kontrolki na określonych kartach, które określisz. N
Mechanizm obsługuje Instalator programu Visual Studio dla rozszerzeń (VSIX). Y Plik VSIX ma specjalny manifest i logikę do tworzenia pakietów SDK. Y Plik VSIX można osadzać w innym programie instalacyjnym.
Object Browser wylicza odwołania. Y Object Browser automatycznie pobiera listę odwołań w zestawach SDK i wylicza je. N
Pliki i linki są automatycznie dodawane do okna dialogowego Menedżera odwołań (linki pomocy i tym podobne są wypełniane automatycznie) Y Okno dialogowe Reference Manager automatycznie wylicza zestawy SDK wraz z linkami pomocy i listą zależności zestawu SDK. N NuGet udostępnia własne okno dialogowe Zarządzanie pakietami NuGet.
Mechanizm obsługuje wiele architektur. Y Zestawy SDK mogą dostarczać wiele konfiguracji. Program MSBuild używa odpowiednich plików dla każdej konfiguracji projektu. N
Mechanizm obsługuje wiele konfiguracji. Y Zestawy SDK mogą dostarczać wiele konfiguracji. W zależności od architektury projektu program MSBuild używa odpowiednich plików dla każdej architektury projektu. N
Mechanizm może określać "nie kopiować". Y W zależności od tego, gdzie pliki są umieszczane, w folderze \redist lub \designtime, można kontrolować, które pliki mają być kopiowane do pakietu aplikacji docelowej. N Deklarujesz pliki do skopiowania w manifeście pakietu.
Zawartość znajduje się w zlokalizowanych plikach. Y Zlokalizowane dokumenty XML w zestawach SDK są automatycznie uwzględniane w celu uzyskania lepszego doświadczenia podczas projektowania. N
Program MSBuild obsługuje jednoczesne korzystanie z wielu wersji zestawu SDK. Y Zestaw SDK obsługuje jednoczesne korzystanie z wielu wersji. N To nie jest odwoływanie. W projekcie nie można jednocześnie mieć więcej niż jednej wersji plików NuGet.
Mechanizm obsługuje określanie odpowiednich platform docelowych, wersji programu Visual Studio i typów projektów. Y Menedżer odwołań i Przybornik wyświetlają tylko te zestawy SDK, które są powiązane z projektem, dzięki czemu użytkownicy mogą łatwiej wybrać odpowiednie zestawy SDK. Y (częściowe) Pivot to platforma docelowa. Brak filtrowania w interfejsie użytkownika. Podczas instalacji może wystąpić błąd.
Mechanizm obsługuje określanie informacji rejestracyjnych dla natywnych plików WinMD. Y Można określić korelację między plikiem winmd a plikiem .dll w SDKManifest.xml. N
Mechanizm obsługuje określanie zależności od innych zestawów SDK. Y Zestaw SDK powiadamia tylko użytkownika; użytkownik musi je nadal instalować i odwoływać się do nich ręcznie. Y Narzędzie NuGet automatycznie je ściąga; użytkownik nie jest powiadamiany.
Mechanizm integruje się z pojęciami ze sklepu Microsoft Store, takimi jak manifest aplikacji i identyfikator platformy. Y Zestaw SDK musi przekazać koncepcje specyficzne dla Sklepu, aby pakowanie i F5 działały prawidłowo z pakietami SDK dostępnymi w Sklepie. N
Mechanizm integruje się z potokiem debugowania aplikacji dla aplikacji ze Sklepu Windows 8.x. Y Zestaw SDK musi przekazać pojęcia specyficzne dla sklepu, aby pakowanie i F5 działały prawidłowo z zestawami SDK dostępnymi w sklepie. Y Zawartość narzędzia NuGet staje się częścią projektu. Nie jest wymagane żadne specjalne uwzględnienie F5.
Mechanizm integruje się z manifestami aplikacji. Y Zestaw SDK musi przekazać koncepty specyficzne dla Sklepu, aby pakowanie i F5 działały prawidłowo z zestawami SDK dostępnymi w Sklepie. Y Zawartość narzędzia NuGet staje się częścią projektu. Nie ma potrzeby szczególnego rozważania F5.
Mechanizm wdraża pliki inne niż referencyjne (na przykład wdrożenie platformy testowej, na której uruchamiane są testy aplikacji Sklepu Windows 8.x). Y Jeśli umieścisz pliki w folderze \redist, pliki zostaną automatycznie wdrożone. Y
Mechanizm automatycznie dodaje SDK-i platformy w środowisku IDE programu Visual Studio. Y W przypadku porzucania zestawu Windows 8 SDK lub zestawu Windows Phone SDK w określonej lokalizacji z określonym układem zestaw SDK zostanie automatycznie zintegrowany ze wszystkimi funkcjami programu Visual Studio. N
Mechanizm wspiera niezaśmieconą maszynę deweloperską. (Oznacza to, że instalacja nie jest wymagana, a prosty dostęp do kontroli kodu źródłowego wystarczy). N Ponieważ odwołujesz się do zestawu SDK, musisz oddzielnie zaewidencjonować rozwiązanie i zestaw SDK. Możesz sprawdzić zestaw SDK w dwóch domyślnych, niezarejestrowanych lokalizacjach, z których MSBuild iteruje zestawy SDK (więcej szczegółów znajdziesz w Creating a Software Development Kit). Alternatywnie, jeśli lokalizacja niestandardowa zawiera zestawy SDK, możesz wpisać następujący kod w pliku projektu.

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

Następnie sprawdź zestawy SDK w tej lokalizacji.
Y Możesz sprawdzić rozwiązanie, a program Visual Studio natychmiast rozpoznaje pliki i podejmuje akcje wobec tych plików.
Możesz dołączyć do dużej społeczności autorów pakietów. N/A Społeczność jest nowa. Y
Możesz dołączyć do dużej społeczności użytkowników pakietów. N/A Społeczność jest nowa. Y
Możesz dołączyć do ekosystemu partnerów (galerie niestandardowe, repozytoria itd.). N/A Dostępne repozytoria obejmują witrynę Visual Studio Marketplace, Centrum pobierania Microsoft i Microsoft Store. Y
Mechanizm integruje się z serwerami ciągłej integracji na potrzeby tworzenia i konsumpcji pakietów. Y Zestaw SDK musi przekazać zarejestrowaną lokalizację (właściwość SDKReferenceDirectoryRoot) w wierszu polecenia do programu MSBuild. Y
Mechanizm obsługuje zarówno stabilne, jak i wstępnie wydane wersje pakietów. Y Zestaw SDK obsługuje dodawanie odwołań do wielu wersji. Y
Mechanizm obsługuje automatyczną aktualizację zainstalowanych pakietów. Y Jeśli jest dostarczany jako VSIX lub część automatycznych aktualizacji programu Visual Studio, zestaw SDK udostępnia powiadomienia automatyczne. Y
Mechanizm zawiera autonomiczny plik .exe do tworzenia i używania pakietów. Y Zestaw SDK zawiera elementy MSBuild.exe. Y
Pakiety można zaewidencjonować w kontroli wersji. Y Nie można zaewidencjonować żadnych elementów poza węzłem Dokumenty, co oznacza, że zestawy SDK rozszerzeń mogą nie być zaewidencjonowane. Rozmiar rozszerzenia SDK może być duży. Y
Interfejs programu PowerShell umożliwia tworzenie i używanie pakietów. Y (zużycie), N (tworzenie) Brak narzędzi do tworzenia zestawu SDK. Uruchomienie polega na wykonywaniu MSBuild w wierszu polecenia. Y
Do debugowania można użyć pakietu symboli. Y W przypadku umieszczenia plików .pdb w SDK, pliki są wykrywane automatycznie. Y
Mechanizm obsługuje automatyczne aktualizacje menedżera pakietów. N/A Zestaw SDK zostanie poprawiony za pomocą programu MSBuild. Y
Mechanizm obsługuje uproszczony format manifestu. Y SDKManifest.xml obsługuje wiele atrybutów, ale zwykle jest wymagany mały podzestaw. Y
Mechanizm jest dostępny dla wszystkich wersji programu Visual Studio. Y Zestaw SDK obsługuje wszystkie wersje programu Visual Studio. Y Pakiet NuGet obsługuje wszystkie wersje programu Visual Studio.