Megjelent a Microsoft Windows App SDK 1.0 Stabil verziója, letölthető (kiadási megjegyzések)
12 perc olvas
Frissítve
Olvassa el közzétételi oldalunkat, hogy megtudja, hogyan segítheti az MSPowerusert a szerkesztői csapat fenntartásában Tovább
Számos Preview build után a Microsoft nemrég kiadta a Windows App SDK 1.0.0 Stable-t, egy olyan eszközkészletet, amely felhatalmazza az asztali alkalmazások fejlesztőit arra, hogy modern Windows felhasználói felülettel, API-kkal és platformszolgáltatásokkal készítsenek alkalmazásokat.
Ebben a kiadásban a Microsoft több új funkciót is hozzáadott a Windows App SDK 0.8-ból, és stabilizálta az 1.0-s előnézeti kiadások problémáit.
[lwptoc title="WindowsAppSDK 1.0 Stable" width="30%" float="right"]
WindowsUI 3
A WinUI 3 a Windows App SDK natív felhasználói élmény (UX) keretrendszere.
Új funkciók és frissítések:
- A Microsoft új vezérlőket (PipsPager, Expander, BreadcrumbBar) adott hozzá, és frissítette a meglévő vezérlőket, hogy azok tükrözzék a legújabb Windows-stílusokat WindowsUI 2.6.
- Az egyprojektes MSIX-csomagolást a WinUI támogatja egy új alkalmazás létrehozásával az „Üres alkalmazás, csomagolt…” sablon használatával.
- A Microsoft mostantól támogatja a WinUI 3 alkalmazások telepítését MSIX-csomagolás nélkül a Windows 1809-es és újabb verzióiban. Kérjük, tekintse meg Hozzon létre egy WinUI 3 csomagolatlan asztali alkalmazást további információkat.
- A WinUI 3 projektek immár a Windows 10 1809-es verziójára állíthatják a célverziót. Korábban csak az 1903-as verzióig tudták ezeket beállítani.
- A Visual Studio 2022 Preview 5 és a GA támogatja az alkalmazáson belüli eszköztárat, a Hot Reload és a Live Visual Tree for WinUI csomagolt alkalmazásokat.
Fontos korlátozások:
- Ismert problémák a csomagolt és csomagolatlan WinUI alkalmazások egyaránt:
- Futásidejű hiba a C++ Windows Runtime Componentre hivatkozó C++ alkalmazásokban: A megoldáshoz adja hozzá az alábbi célt a Windows Runtime Component .vcxproj programjának végéhez:
XML
<Target Name="GetPriIndexName"> <PropertyGroup> <!-- Winmd library targets use the default root namespace of the project for the App package name --> <PriIndexName Condition="'$(RootNamespace)' != ''">$(RootNamespace)</PriIndexName> <!-- If RootNamespace is empty fall back to TargetName --> <PriIndexName Condition="$(PriIndexName) == ''">$(TargetName)</PriIndexName> </PropertyGroup> </Target>
- Futásidejű hiba a C++ Windows Runtime Componentre hivatkozó C++ alkalmazásokban: A megoldáshoz adja hozzá az alábbi célt a Windows Runtime Component .vcxproj programjának végéhez:
- Ismert problémák a WinUI alkalmazások egyprojektes MSIX-szel (Üres alkalmazás, csomagolt sablon):
- Hiányzik a Package & Publish menüpont a Visual Studio újraindításáig: Ha új alkalmazást hoz létre egyprojektes MSIX-szel mind a Visual Studio 2019-ben, mind a Visual Studio 2022-ben az Üres alkalmazás, csomagolt (WinUI 3 az asztalon) projektsablon használatával, a projekt közzétételére vonatkozó parancs nem jelenik meg a menüben, amíg be nem zárja. és nyissa meg újra a Visual Studio-t.
- Az AC# alkalmazás egyprojektes MSIX-szel nem fordítható le a „C++ (v14x) Universal Windows Platform Tools” opcionális összetevő telepítése nélkül. Kilátás Fejlesztői eszközök telepítése további információkat.
- Potenciális futásidejű hiba az egyprojektű MSIX-szel rendelkező alkalmazásban, amely a hivatkozott Windows Runtime Componentben meghatározott típusokat használja: A megoldáshoz manuálisan adja hozzá aktiválható osztálybejegyzések az appxmanifest.xml fájlba.
- A C#-alkalmazásokban a következő hiba várható: „COMException: Class not regisztrált (0x80040154 (REGDB_E_CLASSNOTREG)).
- A C++/WinRT alkalmazásokban várható hiba a következő: „winrt::hresult_class_not_registered”.
- Ismert problémák a WinUI alkalmazások MSIX-csomagolás nélkül (csomagolatlan alkalmazások):
- Egyes API-k csomagazonosítót igényelnek, és nem támogatottak a csomagolatlan alkalmazásokban, például:
- ApplicationData
- StorageFile.GetFileFromApplicationUriAsync
- StorageFile.CreateStreamedFileFromUriAsync
- ApiInformation (Windows 10 alatt nem támogatott)
- Csomag.Aktuális
- Bármely API a Windows.ApplicationModel.Resources névtér
- Bármely API a Microsoft.Windows.ApplicationModel.Resources névtér
- Egyes API-k csomagazonosítót igényelnek, és nem támogatottak a csomagolatlan alkalmazásokban, például:
- Ismert problémák a WinUI alkalmazások csomagolása és telepítése:
- A
Package
parancs nem támogatott az egyprojektű MSIX-szel rendelkező WinUI-alkalmazásokban (üres alkalmazás, csomagolt sablon). Ehelyett használja aPackage & Publish
parancsot egy MSIX-csomag létrehozásához. - NuGet-csomag létrehozása C# osztálykönyvtárból a
Pack
parancsot, biztosítsa az aktívConfiguration
isRelease
. - A
Pack
parancsot nem támogatja a C++ Windows Runtime Components NuGet-csomag létrehozásához.
- A
Ablakozás
A Windows App SDK egy AppWindow osztály, amely továbbfejleszti a korábbi, könnyen használható Windows.UI.WindowManagement.AppWindow előnézeti osztályt, és elérhetővé teszi az összes Windows-alkalmazás számára, beleértve a Win32-t, a WPF-et és a WinForms-t.
Új funkciók
- AppWindow egy magas szintű ablakkezelő API, amely könnyen használható ablakozási forgatókönyveket tesz lehetővé, amelyek jól integrálhatók a Windows felhasználói élménnyel és más alkalmazásokkal. Egy alkalmazás tartalmának rendszer által felügyelt tárolójának magas szintű absztrakcióját képviseli. Ez az a tároló, amelyben a tartalmat tárolják, és azt az entitást képviseli, amellyel a felhasználók interakcióba lépnek, amikor átméretezik és áthelyezik az alkalmazást a képernyőn. A Win32-t ismerő fejlesztők számára az AppWindow a HWND magas szintű absztrakciójának tekinthető.
- DisplayArea a HMONITOR magas szintű absztrakcióját képviseli, ugyanazokat az elveket követi, mint az AppWindow.
- DisplayAreaWatcher lehetővé teszi a fejlesztő számára, hogy megfigyelje a megjelenítési topológiában bekövetkezett változásokat, és felsorolja a rendszerben jelenleg definiált DisplayAreas-okat.
Bemenet
Ezek azok a bemeneti API-k, amelyek támogatják a WinUI-t, és alacsonyabb szintű API felületet biztosítanak a fejlesztők számára a fejlettebb bemeneti interakciók eléréséhez.
Új funkciók
- Pointer API-k: PointerPoint, PointerPointPropertiesés PointEventArgs a mutató eseményinformációinak lekérésének támogatása XAML bemeneti API-kkal.
- InputPointerSource API: Olyan objektumot jelöl, amely regisztrálva van a mutató bemenetére, és biztosítja a mutató kurzorának és a bemeneti események kezelését az XAML SwapChainPanel API-jához.
- Kurzor API: Lehetővé teszi a fejlesztők számára a kurzor bittérképének megváltoztatását.
- GestureRecognizer API: Lehetővé teszi a fejlesztők számára, hogy felismerjenek bizonyos gesztusokat, például a húzást, a tartást és a kattintást, ha mutatóinformációkat kapnak.
Fontos korlátozások
- Minden termék PointerPoint a statikus gyári funkciókat eltávolítottuk: Get CurrentPoint, Get CurrentPointTransformed, Get IntermediatePointsés GetIntermediatePointsTransformed.
- A Windows App SDK nem támogatja a visszakeresést PointerPoint mutatóazonosítókkal rendelkező objektumok. Ehelyett használhatja a PointerPoint tag funkció GetTransformedPoint egy létező átalakított változatának lekéréséhez PointerPoint tárgy. A köztes pontokhoz használhatja a PointEventArgs tagfunkciók Get IntermediatePoints és a GetTransformedIntermediatePoints.
- A platform SDK API közvetlen használata Windows.UI.Core.CoreDragOperation nem fog működni a WinUI alkalmazásokkal.
- PointerPoint ingatlanait Nyerspozíció és a ContactRectRaw eltávolították, mert nem előre jelzett értékekre vonatkoztak, amelyek megegyeztek az operációs rendszer normál értékeivel. Használat pozíció és a ContactRect helyette. A mutató előrejelzését most a Microsoft.UI.Input.PointerPredictor API objektum.
Alkalmazás életciklusa
Az App Lifecycle funkcióinak többsége már létezik az UWP platformon, és bekerült a Windows App SDK-ba az asztali alkalmazástípusok, különösen a csomagolatlan konzolalkalmazások, a Win32-alkalmazások, a Windows Forms- és a WPF-alkalmazások általi használatra. Ezeknek a szolgáltatásoknak a Windows App SDK megvalósítása nem használható az UWP-alkalmazásokban, mivel magában az UWP-platformban is vannak egyenértékű szolgáltatások.
fontos
Ha UWP-alkalmazáson dolgozik, tekintse meg a az UWP migrációs útmutatója ha többet szeretne megtudni az alkalmazás Windows App SDK-ba való migrálásáról.
A nem UWP-alkalmazások MSIX-csomagokba is csomagolhatók. Noha ezek az alkalmazások használhatják a Windows App SDK alkalmazáséletciklus-szolgáltatásainak egy részét, a jegyzékmódszert kell használniuk, ahol ez elérhető. Például nem tudják használni a Windows App SDK-t Regisztráció XXXaktiváláshoz API-k, és ehelyett regisztrálnia kell a gazdag aktiváláshoz a jegyzéken keresztül.
A csomagolt alkalmazásokra vonatkozó összes megszorítás a csomagolt WinUI-alkalmazásokra is vonatkozik, és vannak további szempontok is, amelyeket alább ismertetünk.
Fontos szempontok:
- Gazdag aktiválás: GetActivatedEventArgs
- Kicsomagolt alkalmazások: Teljesen használható.
- Csomagolt alkalmazások: Használható, de ezek az alkalmazások is használhatják a platformot
GetActivatedEventArgs
. Vegye figyelembe, hogy a platform határozza meg Windows.ApplicationModel.AppInstance míg a Windows App SDK meghatározza Microsoft.Windows.AppLifecycle.AppInstance. És bár az UWP alkalmazások használhatják aActivatedEventArgs
osztályok, mint plFileActivatedEventArgs
és aLaunchActivatedEventArgs
, a Windows App SDK AppLifecycle funkcióját használó alkalmazásoknak a felületeket kell használniuk, nem az osztályokat (pl.IFileActivatedEventArgs
,ILaunchActivatedEventArgs
, stb). - WinUi alkalmazások: A WinUI App.OnLaunched a Microsoft.UI.Xaml.LaunchActivatedEventArgs, míg a platform
GetActivatedEventArgs
visszaadja a Windows.ApplicationModel.IActivatedEventArgsés a WindowsAppSDKGetActivatedEventArgs
visszaadja a Microsoft.Windows.AppLifecycle.AppActivationArguments objektum, amely egy platformot képviselhetLaunchActivatedEventArgs
. - További információkért lásd: Gazdag aktiválás.
- Regisztráljon/törölje a regisztrációt a gazdag aktiváláshoz
- Kicsomagolt alkalmazások: Teljesen használható.
- Csomagolt alkalmazások: Nem használható, használja helyette az alkalmazás MSIX jegyzékét.
- További információkért lásd: Gazdag aktiválás.
- Egy-/többpéldányos
- Kicsomagolt alkalmazások: Teljesen használható.
- Csomagolt alkalmazások: Teljesen használható.
- WinUI alkalmazások: Ha egy alkalmazás más példányokat szeretne észlelni, és át akar irányítani egy aktiválást, akkor ezt a lehető legkorábban meg kell tennie, még mielőtt bármilyen ablakot inicializálna stb. Ennek engedélyezéséhez az alkalmazásnak meg kell adnia a DISABLE_XAML_GENERATED_MAIN-t, és meg kell írnia egy egyéni Main (C#) ill. WinMain (C++), ahol képes az észlelésre és az átirányításra.
- RedirectActivationToAsync egy aszinkron hívás, és ne várjon az aszinkron hívásra, ha az alkalmazás STA-ban fut. A Windows Forms és a C# WinUI alkalmazások esetében szükség esetén a Maint aszinkronnak nyilváníthatja. C++ WinUI és C# WPF alkalmazások esetén a Main nem deklarálható aszinkronizáltnak, ezért ehelyett át kell helyeznie az átirányítási hívást egy másik szálra, hogy ne blokkolja az STA-t.
- További információkért lásd: Alkalmazás példányosítás.
- Tápellátás/állapot értesítések
- Kicsomagolt alkalmazások: Teljesen használható.
- Csomagolt alkalmazások: Teljesen használható.
- További információkért lásd: Energiagazdálkodás.
Ismert probléma:
- A fájltípus-társítások helytelenül kódolják %1-et %251-re az igekezelő parancssori sablonjának beállításakor, ami összeomlik a kicsomagolt Win32-alkalmazások. Részleges megoldásként manuálisan is módosíthatja a beállításjegyzék értékét %1 értékre. Ha a célfájl elérési útjában szóköz van, akkor is sikertelen lesz, és nincs megoldás erre a forgatókönyvre.
- Ezeket az egy/több példányban előforduló hibákat egy közelgő szervizjavításban javítjuk:
- Az AppInstance átirányítás nem működik x86-ra fordítva
- A kulcs regisztrálása, regisztrációjának törlése és újraregisztrálása az alkalmazás összeomlását okozza
WriteCore
A DWriteCore a Windows App SDK megvalósítása DirectWrite, amely a DirectX API a kiváló minőségű szövegmegjelenítéshez, a felbontástól független körvonal-betűtípusokhoz, valamint a teljes Unicode szöveg- és elrendezés támogatáshoz. A DWriteCore a DirectWrite egy formája, amely a Windows 10-es verzióitól egészen a 1809-es verzióig (10.0; Build 17763) fut, és megnyitja az ajtót a platformok közötti használat előtt.
Jellemzők A DWriteCore néhány kivétellel a DirectWrite összes funkcióját tartalmazza.
Fontos korlátozások
- A DWriteCore nem tartalmazza a következő DirectWrite-szolgáltatásokat:
- Munkamenetenkénti betűtípusok
- Végfelhasználó által meghatározott karakter (EUDC) betűtípusok
- Font-streaming API-k
- Az alacsony szintű megjelenítési API-támogatás részleges.
- A DWriteCore nem működik együtt a Direct2D-vel, de használható IDWriteGlyphRunAnalysis és a IDWriteBitmapRenderTarget.
MRT Core
Az MRT Core a modern Windows egyszerűsített változata Erőforrás-kezelő rendszer amelyet a Windows App SDK részeként terjesztenek.
Fontos korlátozások
- A .NET-projektekben a projektmappába másolt és beillesztett erőforrásfájlokat a rendszer nem indexeli az F5 billentyűvel, ha az alkalmazás már elkészült. Megkerülő megoldásként építse újra az alkalmazást. Lát 1503. szám Ha többet akarsz tudni.
- A .NET-projektekben, ha erőforrásfájlt adnak a projekthez a Visual Studio felhasználói felületén, előfordulhat, hogy a fájlok alapértelmezés szerint nem indexelhetők. Lát 1786. szám további információkért. A probléma megkerüléséhez távolítsa el az alábbi bejegyzéseket a CSPROJ fájlból:
XML
<ItemGroup> <Content Remove="<image file name>" /> </ItemGroup> <ItemGroup> <PRIResource Remove="<resw file name>" /> </ItemGroup>
- Csomagolatlan C++ WinUI-alkalmazások esetén az erőforrás-URI nincs megfelelően összeállítva. A probléma megkerüléséhez adja hozzá a következőket a vcxprojhoz:
XML
<!-- Add the following after <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> --> <PropertyGroup> <AppxPriInitialPath></AppxPriInitialPath> </PropertyGroup>
bevetés
Új funkciók és frissítések
- Automatikusan inicializálhatja a Windows App SDK-t a következőn keresztül
WindowsPackageType project
tulajdonság a Windows App SDK futási környezet betöltéséhez és a Windows App SDK API-k meghívásához. Lát Hozzon létre egy WinUI 3 alkalmazást utasításokat. - A kicsomagolatlan alkalmazások telepíthetik a Windows App SDK-t az önálló Windows App SDK-ba integrálva
.exe
telepítőt a meglévő MSI-be vagy telepítőprogramba. További információért lásd Windows App SDK telepítési útmutató csomagolatlan alkalmazásokhoz. - A kicsomagolt .NET-alkalmazások .NET-burkolót is használhatnak a bootstrapper API hogy futás közben dinamikusan függővé váljon a Windows App SDK keretrendszer-csomagtól. A .NET wrapperrel kapcsolatos további információkért lásd: .NET burkolókönyvtár.
- A csomagolt alkalmazások a telepítési API segítségével ellenőrizhetik és biztosíthatják, hogy minden szükséges csomag telepítve van-e a gépen. A telepítési API működésével kapcsolatos további információkért tekintse meg a telepítési útmutató csomagolt alkalmazásokhoz.
Fontos korlátozások
- A bootstrapper API .NET-burkolója csak csomagolatlan .NET-alkalmazások számára készült a Windows App SDK-hoz való hozzáférés egyszerűsítése érdekében.
- Csak olyan MSIX csomagolt alkalmazások, amelyek teljes mértékben megbízhatóak vagy rendelkeznek a csomagkezelés A korlátozott képességű felhasználók jogosultak a központi és egyszemélyes csomagfüggőségek telepítésére a központi telepítési API használatára. A részleges megbízhatóságú csomagolt alkalmazások támogatása a későbbi kiadásokban lesz elérhető.
- Amikor az F5 egy x86-os alkalmazást tesztel, amely a DeploymentManager.Initialize módszerrel x64 rendszeren, győződjön meg arról, hogy az x64 keretrendszer először telepítésre kerül a WindowsAppRuntimeInstall.exe. Ellenkező esetben találkozni fog a NEM TALÁLHATÓ hiba, ami abból adódik, hogy a Visual Studio nem telepíti az x64-keretrendszert, ami általában a Store-telepítés vagy az oldalbetöltés során fordul elő.
Egyéb korlátozások és ismert problémák
- Nem támogatott semmilyen CPU-felépítés konfigurációja: Mikor a Windows App SDK hozzáadása egy meglévő .NET-alkalmazáshoz vagy -összetevőhöz, amely támogatja Bármilyen CPU, meg kell adnia a kívánt architektúrát:
x86
,x64
orarm64
. - Frissítés .NET 5-ről .NET 6-ra: Amikor a Visual Studio felhasználói felületén frissít, összeállítási hibákba ütközhet. Megkerülő megoldásként manuálisan frissítse a projektfájl TargetFrameworkPackage csomagját az alábbiakra:
XML
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
- A C# Single-Project MSIX alkalmazás nem fordítható le, ha a C++ UWP Tools nincs telepítve. Ha van C# Single-Project MSIX projektje, akkor telepítenie kell a C++ (v14x) Univerzális Windows platformeszközök opcionális komponens.
- A későbbi VSIX nyelv telepítése nem sikerül a Visual Studio 2019-ben, ha a Visual Studio 2019 több verziója is telepítve van. Ha a Visual Studio 2019 több verziója van telepítve (pl. kiadás és előnézet), majd telepíti a Windows App SDK VSIX-et mindkét C++-hoz és a C#, a második telepítés sikertelen lesz. A megoldáshoz távolítsa el az egyprojektű MSIX Packaging Tools for Visual Studio 2019 csomagot az első nyelvű VSIX után. Kilátás ezt a visszajelzést a problémával kapcsolatos további információkért.
- Ha azt szeretnénk, hogy
co_await
a DispatcherQueue.TryEnqueue módszert, majd használja a önéletrajz_előtér segítő funkció a Windows Implementation Library (WIL):- Adjon hozzá hivatkozást Microsoft.Windows.ImplementationLibrary NuGet csomag.
- Adjuk hozzá a
#include <wil/cppwinrt_helpers.h>
nyilatkozatot a kódfájlba. - Felhasználás
wil::resume_foreground(your_dispatcher);
nak nekco_await
az eredmény.
Olvasson többet, és keresse meg a letöltési linkeket a Microsoftnál itt.