Megjelent a Microsoft Windows App SDK 1.0 Stabil verziója, letölthető (kiadási megjegyzések)

Olvasási idő ikonra 12 perc olvas


Az olvasók segítenek az MSpoweruser támogatásában. Kaphatunk jutalékot, ha a linkjeinken keresztül vásárol. Eszköztipp ikon

Olvassa el közzétételi oldalunkat, hogy megtudja, hogyan segítheti az MSPowerusert a szerkesztői csapat fenntartásában Tovább

winUI

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>
      
  • 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):
  • Ismert problémák a WinUI alkalmazások csomagolása és telepítése:
    • Package parancs nem támogatott az egyprojektű MSIX-szel rendelkező WinUI-alkalmazásokban (üres alkalmazás, csomagolt sablon). Ehelyett használja a Package & 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ív Configuration is Release.
    • Pack parancsot nem támogatja a C++ Windows Runtime Components NuGet-csomag létrehozásához.

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: PointerPointPointerPointPropertiesé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 CurrentPointGet CurrentPointTransformedGet 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
  • 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: x86x64 or arm64.
  • 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):
    1. Adjon hozzá hivatkozást Microsoft.Windows.ImplementationLibrary NuGet csomag.
    2. Adjuk hozzá a #include <wil/cppwinrt_helpers.h> nyilatkozatot a kódfájlba.
    3. Felhasználás wil::resume_foreground(your_dispatcher); nak nek co_await az eredmény.

Olvasson többet, és keresse meg a letöltési linkeket a Microsoftnál itt.

Bővebben a témákról: Windows App SDK 1.0.0, Winui 3