Zestaw SDK systemu Windows

Zestaw Windows SDK (10.0.22621) dla Windows 11 w wersji 22H2 udostępnia najnowsze nagłówki, biblioteki, metadane i narzędzia do tworzenia aplikacji systemu Windows. Ten zestaw SDK umożliwia tworzenie aplikacji platforma uniwersalna systemu Windows (UWP) i Win32 dla Windows 11 w wersji 22H2 i poprzednich wersjach systemu Windows.

Porada

Zestaw SDK aplikacji systemu Windows
Windows App SDK udostępnia ujednolicony zestaw interfejsów API i narzędzi, które są oddzielone od systemu operacyjnego i wydawane deweloperom za pośrednictwem pakietów NuGet. Te interfejsy API i narzędzia mogą być używane w spójny sposób przez dowolną aplikację klasyczną w Windows 11 i na poziomie downlevel w celu Windows 10, wersja 1809.

Wprowadzenie

Zestaw Windows SDK można uzyskać na dwa sposoby: zainstalować go na tej stronie, wybierając link pobierania lub wybierając pozycję "Windows 11 SDK (10.0.22621.0)" w opcjonalnych składnikach Instalatora programu Visual Studio 2022. Przed zainstalowaniem tego zestawu SDK:

Ostatnia aktualizacja: 4 października 2021 r.

Wymagania systemowe

Zestaw Windows SDK ma następujące minimalne wymagania systemowe:

Obsługiwane systemy operacyjne

  • Windows 10 w wersji 1507 lub nowszej: Home, Professional, Education i Enterprise (LTSB i S nie są obsługiwane dla platformy UWP)
  • Windows Server 2022, Windows Server 2019, Windows Server 2016 i Windows Server 2012 R2 (tylko wiersz polecenia)
  • Windows 8.1
  • Windows 7 z dodatkiem SP1

(Nie wszystkie narzędzia są obsługiwane we wcześniejszych systemach operacyjnych)

Wymagania sprzętowe

  • Procesor 1,6 GHz lub szybszy
  • 1 GB pamięci RAM
  • 4 GB dostępnego miejsca na dysku twardym

Dodatkowe wymagania dotyczące zestawu SDK

Instalacja w Windows 8.1 i starszych systemach operacyjnych wymaga aktualizacji uniwersalnego środowiska uruchomieniowego języka C w systemie Windows. Aby przeprowadzić instalację za pośrednictwem Windows Update, przed zainstalowaniem zestawu Windows SDK upewnij się, że zainstalowano najnowsze zalecane aktualizacje i poprawki z usługi Microsoft Update.

Przykłady

Przykłady aplikacji systemu Windows są teraz dostępne za pośrednictwem usługi GitHub. Możesz przeglądać kod w usłudze GitHub, sklonować osobistą kopię repozytorium z repozytorium Git lub pobrać spakowane archiwum wszystkich przykładów. Zachęcamy do przesyłania opinii, więc możesz otworzyć problem w repozytorium, jeśli masz problem lub pytanie. Te przykłady są przeznaczone do uruchamiania na komputerach, urządzeniach przenośnych i przyszłych urządzeniach, które obsługują platforma uniwersalna systemu Windows (UWP).

Poprzednie wersje zestawu SDK

Wcześniej wydane zestawy SDK i emulatory, w tym szczegóły aktualizacji, można znaleźć na stronie archiwum.

Interfejs API rozświetla

W przypadku korzystania z nowych interfejsów API rozważ zapisanie aplikacji w celu adaptacyjnego działania, aby była ona uruchamiana poprawnie na najszerszej tablicy urządzeń z systemem Windows. Adaptacyjna aplikacja "zapala się" z nowymi funkcjami wszędzie tam, gdzie są obsługiwane urządzenia i wersja systemu Windows, ale w przeciwnym razie oferuje tylko funkcje dostępne w wykrytej wersji platformy. Aby uzyskać szczegółowe informacje o implementacji, zobacz artykuł Wersja kodu adaptacyjnego.

Informacje o wersji i znane problemy

Zestaw Windows SDK dla Windows 11 w wersji 22H2
  • Aktualizacja obsługi 10.0.22621.755. Obejmuje obsługę architektury ARM64 dla wersji VS 17.4
zestaw SDK Windows 10 w wersji 2104
  • Usunięto interfejs API-ms-win-net-isolation-l1-1-0.lib. Aplikacje łączące się z interfejsem api-ms-win-net-isolation-l1-1-0.lib nie mogą przełączyć biblioteki OneCoreUAP.lib jako zastępczej.

  • Usunięto plik irprops.lib. Aplikacje, które łączyły się z biblioteką irprops.lib, mogą przełączyć się do pliku bthprops.lib jako zamiany drop-in.

  • Przeniesiono tag ENUMServerSelection z pliku wuapicommon.h do pliku wupai.h i usunięto nagłówek. Jeśli chcesz użyć tagu ENUMServerSelection, musisz uwzględnić plik wuapi.h lub wuapi.idl.

  • Pakiet API Pack Windows 10 WinRT umożliwia dodanie najnowszych interfejsów API środowisko wykonawcze systemu Windows do .NET Framework 4.5 lub nowszych oraz bibliotek i aplikacji platformy .NET Core 3.0+. Aby uzyskać dostęp do pakietu interfejsu API WinRT Windows 10, zobacz pakiet nuget Microsoft.Windows.SDK.Contracts.

  • Rodzina funkcji printf jest teraz zgodna z regułami zaokrąglania IEEE 754 podczas drukowania dokładnie reprezentujących liczby zmiennoprzecinkowe i będzie honorować tryb zaokrąglania żądany za pośrednictwem wywołań do fesetround. Starsze zachowanie jest dostępne podczas łączenia z legacy_stdio_float_rounding.obj.

  • Zestaw certyfikacji aplikacji systemu Windows. Kilka nowych interfejsów API zostało dodanych do listy Obsługiwane interfejsy API w zestawie certyfikacji aplikacji i Sklepie Windows. Jeśli na liście obsługiwanych są interfejsy API, które są wyszarzone lub wyłączone w programie Visual Studio, możesz wprowadzić niewielką zmianę w pliku źródłowym, aby uzyskać do nich dostęp. Aby uzyskać więcej informacji, zobacz ten znany problem. Znajdź więcej aktualizacji testów.

  • Aktualizacje kompilatora komunikatów (mc.exe):

    • Teraz wykrywa znacznik kolejności bajtów Unicode (BOM) w plikach mc. Jeśli plik .mc rozpoczyna się od formatu UTF-8 BOM, będzie on odczytywany jako plik UTF-8. W przeciwnym razie, jeśli rozpoczyna się od utF-16LE BOM, zostanie odczytany jako plik UTF-16LE. Jeśli określono parametr -u, będzie on odczytywany jako plik UTF-16LE. W przeciwnym razie zostanie odczytany przy użyciu bieżącej strony kodowej (CP_ACP).
    • Teraz unika problemów z regułą jednej definicji (ODR) w pomocnikach ETW generowanych przez mc/C++ spowodowanych konfliktem makr konfiguracji (np. gdy dwa pliki cpp z definicjami konfliktów MCGEN_EVENTWRITETRANSFER są połączone z tym samym plikiem binarnym, pomocnicy ETW generowane przez mc będą teraz uwzględniać definicję MCGEN_EVENTWRITETRANSFER w każdym pliku cpp zamiast arbitralnie wybierać jeden lub drugi).
  • Aktualizacje preprocesora śledzenia systemu Windows (tracewpp.exe):

    • Obsługuje pliki wejściowe Unicode (.ini, tpl i kod źródłowy). Pliki wejściowe rozpoczynające się od utF-8 lub UTF-16 byte order mark (BOM) będą odczytywane jako Unicode. Pliki wejściowe, które nie rozpoczynają się od modelu BOM, będą odczytywane przy użyciu bieżącej strony kodowej (CP_ACP). W przypadku zgodności z poprzednimi wersjami, jeśli określono parametr wiersza polecenia -UnicodeIgnore, pliki rozpoczynające się od modelu UTF-16 BOM będą traktowane jako puste.
    • Obsługuje pliki wyjściowe Unicode (tmh). Domyślnie pliki wyjściowe będą kodowane przy użyciu bieżącej strony kodowej (CP_ACP). Użyj parametrów wiersza polecenia -cp:UTF-8 lub -cp:UTF-16, aby wygenerować pliki wyjściowe Unicode.
    • Zmiana zachowania: funkcja tracewpp konwertuje teraz cały tekst wejściowy na Unicode, wykonuje przetwarzanie w formacie Unicode i konwertuje tekst wyjściowy na określone kodowanie wyjściowe. Wcześniejsze wersje tracewpp unikały konwersji Unicode i przetwarzały tekst przy założeniu, że zestaw znaków jednobajtowych. Może to prowadzić do zmian zachowania w przypadkach, gdy pliki wejściowe nie są zgodne z bieżącą stroną kodową. W przypadkach, gdy jest to problem, rozważ przekonwertowanie plików wejściowych na UTF-8 (z BOM) i/lub użycie parametru -cp:UTF-8 wiersza polecenia, aby uniknąć niejednoznaczności kodowania.
  • Aktualizacje TraceLoggingProvider.h:

    • Unika problemów z regułą jednej definicji (ODR) spowodowanych konfliktem makr konfiguracji (np. gdy dwa pliki cpp z definicjami powodującymi konflikty TLG_EVENT_WRITE_TRANSFER są połączone z tym samym plikiem binarnym, pomocnicy TraceLoggingProvider.h będą teraz uwzględniać definicję TLG_EVENT_WRITE_TRANSFER w każdym pliku cpp zamiast arbitralnie wybierać jeden lub drugi).
    • W kodzie C++ makro TraceLoggingWrite zostało zaktualizowane w celu umożliwienia lepszego udostępniania kodu między podobnymi zdarzeniami przy użyciu szablonów wariadycznych.
  • Podpisywanie aplikacji. Podpisywanie funkcji Device Guard to funkcja Device Guard dostępna w usługach Microsoft Store dla Firm i Education, która umożliwia przedsiębiorstwom zagwarantowanie, że każda aplikacja pochodzi z zaufanego źródła. Zapoznaj się z dokumentacją dotyczącą podpisywania funkcji Device Guard.

  • Nagłówki zestawu SDK zostały zaktualizowane w celu rozwiązania błędów podczas kompilowania przy użyciu standardowego preprocesora języka C w kompilatorze MSVC cl.exe (/Zc:preprocessor, wprowadzony w programie VS 2019 w wersji 16.6).

  • Naprawiono: "GdiplusTypes.h nie kompiluje się z NOMINMAX". Zobacz Opinie dotyczące programu Visual Studio.

  • Podczas kompilowania za pomocą polecenia /std:c11 lub /std:c17 uzyskujesz teraz:

    • C99 tgmath.h
    • C11 static_assert w pliku assert.h
    • C11 stdalign.h
    • C11 stdnoreturn.h
  • Clang/LLVM for Windows v11 target ARM64 nie jest zgodny z najnowszą wersją winnt.h

    • Aby obejść ten problem, użyj poprzedniej wersji zestawu SDK Windows 10 (kompilacja 19041) lub narzędzia clang/LLVM dla systemu Windows w wersji 10 podczas określania platform ARM64
  • Funkcja DirectXMath (w tym wersja 3.16 w tej wersji) nie jest zgodna z maszyną Clang/LLVM dla systemu Windows w architekturze ARM64.

  • W przypadku niektórych plików nagłówkowych zmieniono je w celu normalizacji ich w systemach plików z uwzględnieniem wielkości liter:

    • OAIdl.h, ObjIdl.h, ObjIdlbase.h, OCIdl.h, Ole2.h, OleAuto.h i OleCtl.h zostały wykonane małe litery.
    • W przypadku kompilacji Clang/LLVM dla systemu Windows w celu obsługi zarówno starszej wersji, jak i najnowszej wersji zestawu SDK Windows 10 bez ostrzeżeń, dodaj -Wno-nonportable-system-include-path do interfejsu wiersza polecenia lub następujące #pragma w źródle:

    #ifdef __clang__

    #pragma clang diagnostic ignored "-Wnonportable-system-include-path"

    #endif

Windows 10 SDK, aktualizacja obsługi wersji 2004 (wydana 12/16/2020)

Ta wersja zawiera następujące pliki. Jeśli wystąpią te problemy, zalecamy jak najszybsze zaktualizowanie wersji zestawu SDK w celu ich uniknięcia:

  • Rozwiązano problem nieprzewidywalny i trudny do diagnozowania awarii podczas łączenia bibliotek parasolowych i natywnych bibliotek systemu operacyjnego (na przykład onecoreuap.lib i kernel32.lib)
  • Rozwiązano problem uniemożliwiający działanie elementu AppVerifier
  • Rozwiązano problem powodujący niepowodzenie usługi WACK z komunikatem "Zadanie nie powiodło się, aby włączyć element HighVersionLie"

Więcej zasobów