NuGet a zestaw SDK jako odwołanie do projektu

Ten artykuł ma ułatwić deweloperom wybór, czy pakiet oprogramowania jako pakiet NuGet, czy jako zestaw SDK( software development kit). W szczególności omówiono różnice między nimi, gdy są przywoływali się 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 Menedżer pakietów.

  • 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 wyświetla listę wszystkich zestawów SDK, które są istotne dla bieżącego projektu po wybraniu pozycji 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 Pomoc techniczna narzędzia 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 Menedżer odwołań, a wszystkie pliki i funkcje są dostępne w przepływie pracy programowania. Y
Program MSBuild automatycznie korzysta z zestawów i plików metadanych systemu Windows (winmd). Y Odwołania w zestawie SDK są automatycznie przekazywane do kompilatora. Y
Program MSBuild automatycznie używa plików .h lub .lib. Y Plik SDKName.props informuje program Visual Studio o sposobie konfigurowania katalogu Visual C++ i tak dalej w przypadku automatycznego użycia pliku h lub .lib . N
Program MSBuild automatycznie używa plików js lub css . Y W Eksplorator rozwiązań możesz rozwinąć węzeł odwołania zestawu SDK języka JavaScript, aby wyświetlić poszczególne pliki js lub css, a następnie wygenerować <source include/> tagi, przeciągając te pliki do swoich plików źródłowych. Zestaw SDK obsługuje konfigurację pakietu F5 i automatyczną. Y
Program MSBuild automatycznie dodaje kontrolkę w przyborniku. Y Przybornik może używać zestawów SDK i wyświetlać kontrolki na określonej karcie. N
Mechanizm obsługuje Instalator programu Visual Studio dla rozszerzeń (VSIX). Y Plik VSIX ma specjalny manifest i logikę do tworzenia pakietów zestawu SDK Y Plik VSIX można osadzać w innym programie instalacyjnym.
Wyliczenie odwołań do przeglądarki obiektów. Y Przeglądarka obiektów automatycznie pobiera listę odwołań w zestawach SDK i wylicza je. N
Pliki i linki są automatycznie dodawane do okna dialogowego Menedżer odwołań (linki pomocy i tak dalej automatycznie wypełniane) Y Okno dialogowe Menedżer odwołań 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, czy pliki są porzucane w folderze \redist lub \designtime , można kontrolować, które pliki mają być kopiowane do pakietu aplikacji zużywających. N Deklarujesz pliki do skopiowania w manifeście pakietu.
Zawartość jest wyświetlana w zlokalizowanych plikach. Y Zlokalizowane dokumenty XML w zestawach SDK są automatycznie uwzględniane w celu uzyskania lepszego środowiska projektowania. N
Program MSBuild obsługuje jednoczesne korzystanie z wielu wersji zestawu SDK. Y Zestaw SDK obsługuje jednoczesne korzystanie z wielu wersji. N Nie dotyczy to odwołania. 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 Okno dialogowe Menedżer odwołań i przybornik zawierają tylko zestawy SDK, które mają zastosowanie do projektu, dzięki czemu użytkownicy mogą łatwiej wybrać odpowiednie zestawy SDK. Y (częściowe) Element przestawny to struktura docelowa. Brak filtrowania w interfejsie użytkownika. W czasie instalacji może zostać zwrócony błąd.
Mechanizm obsługuje określanie informacji rejestracyjnych dla natywnych dysków WinMD. Y Można określić korelację między plikiem winmd i plikiem dll w pliku 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 magazynu, aby pakowanie i F5 działały prawidłowo z zestawami SDK dostępnymi w magazynie. N
Mechanizm integruje się z potokiem debugowania aplikacji dla aplikacji ze Sklepu Windows 8.x. Y Zestaw SDK musi przekazać pojęcia specyficzne dla magazynu, 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 wymagana żadna specjalna uwaga F5.
Mechanizm integruje się z manifestami aplikacji. Y Zestaw SDK musi przekazać pojęcia specyficzne dla magazynu, 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 wymagana żadna specjalna uwaga F5.
Mechanizm wdraża pliki inne niż odwołania (na przykład wdróż platformę testową, na której można uruchamiać testy aplikacji ze Sklepu Windows 8.x). Y W przypadku porzucania plików w folderze \redist pliki zostaną automatycznie wdrożone. Y
Mechanizm automatycznie dodaje zestawy SDK platformy w środowisku IDE programu Visual Studio. Y W przypadku porzucania zestawu Windows 8 SDK lub zestawu Windows Telefon SDK w określonej lokalizacji z określonym układem zestaw SDK zostanie automatycznie zintegrowany ze wszystkimi funkcjami programu Visual Studio. N
Mechanizm obsługuje czystą maszynę dewelopera. (Oznacza to, że instalacja nie jest wymagana, a proste pobieranie z kontroli kodu źródłowego będzie działać). N Ponieważ odwołujesz się do zestawu SDK, musisz oddzielnie zaewidencjonować rozwiązanie i zestaw SDK. Możesz zaewidencjonować zestaw SDK z dwóch domyślnych lokalizacji innych niż rejestr, z których msBuild iteruje zestawy SDK (aby uzyskać szczegółowe informacje, zobacz Tworzenie zestawu Software Development Kit). Alternatywnie, jeśli lokalizacja niestandardowa składa się z zestawów SDK, możesz określić następujący kod w pliku projektu:

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

Następnie sprawdź zestawy SDK w tej lokalizacji.
Y Możesz wyewidencjonować rozwiązanie, a program Visual Studio natychmiast rozpoznaje pliki i działa na tych plikach.
Możesz dołączyć do dużej społeczności autorów pakietów. Nie dotyczy Społeczność jest nowa. Y
Możesz dołączyć do dużej społeczności użytkowników pakietów. Nie dotyczy Społeczność jest nowa. Y
Możesz dołączyć do ekosystemu partnerów (galerie niestandardowe, repozytoria itd.). Nie dotyczy Dostępne repozytoria obejmują witrynę Visual Studio Marketplace, Centrum pobierania Microsoft i Microsoft Store. Y
Mechanizm integruje się z serwerami kompilacji ciągłej integracji na potrzeby tworzenia i użycia pakietów. Y Zestaw SDK musi przekazać lokalizację zaewidencjonowania (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 plik 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 zestawu SDK rozszerzenia 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. Użycie wykonuje program MSBuild w wierszu polecenia. Y
Do debugowania można użyć pakietu symboli. Y W przypadku porzucania plików .pdb w zestawie SDK pliki są pobierane automatycznie. Y
Mechanizm obsługuje automatyczne aktualizacje menedżera pakietów. Nie dotyczy Zestaw SDK zostanie poprawiony za pomocą programu MSBuild. Y
Mechanizm obsługuje uproszczony format manifestu. Y Plik SDKManifest.xml obsługuje wiele atrybutów, ale niewielki podzbiór jest zwykle wymagany. 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.