Vydaná stabilná súprava Microsoft Windows App SDK 1.0, k dispozícii na stiahnutie (poznámky k vydaniu)

Ikona času čítania 12 min. čítať


Čítačky pomáhajú podporovať MSpoweruser. Ak nakupujete prostredníctvom našich odkazov, môžeme získať províziu. Ikona popisu

Prečítajte si našu informačnú stránku a zistite, ako môžete pomôcť MSPoweruser udržať redakčný tím Čítaj viac

winUI

Po niekoľkých verziách Preview spoločnosť Microsoft práve vydala Windows App SDK 1.0.0 Stable, súpravu nástrojov, ktorá umožňuje vývojárom desktopových aplikácií vytvárať aplikácie s moderným používateľským rozhraním Windows, rozhraniami API a funkciami platformy.

V tomto vydaní spoločnosť Microsoft pridala viacero nových funkcií z Windows App SDK 0.8 a stabilizovala problémy z verzií 1.0 Preview.

[lwptoc title=”WindowsAppSDK 1.0 Stable” width=”30%” float=”right”]

WindowsUI 3

WinUI 3 je natívny rámec používateľského prostredia (UX) pre Windows App SDK.

Nové funkcie a aktualizácie:

  • Microsoft pridal nové ovládacie prvky (PipsPager, Expander, BreadcrumbBar) a aktualizoval existujúce ovládacie prvky, aby odrážali najnovšie štýly Windows z WindowsUI 2.6.
  • Balenie MSIX s jedným projektom je podporované vo WinUI vytvorením novej aplikácie pomocou šablóny „Prázdna aplikácia, zabalené…“.
  • Spoločnosť Microsoft teraz podporuje nasadzovanie aplikácií WinUI 3 bez balíka MSIX na Windows verzie 1809 a vyššie. Pozrite si prosím Vytvorte nezabalenú počítačovú aplikáciu WinUI 3 Ďalšie informácie.
  • Projekty WinUI 3 teraz môžu nastaviť svoju cieľovú verziu až na Windows 10, verziu 1809. Predtým ich bolo možné nastaviť len na verziu 1903.
  • Panel s nástrojmi v aplikácii, rýchle opätovné načítanie a živý vizuálny strom pre aplikácie s balíkom WinUI sú podporované vo Visual Studio 2022 Preview 5 a GA.

Dôležité obmedzenia:

  • Známe problémy pre zabalené aj nezabalené aplikácie WinUI:
    • Chyba spustenia v aplikáciách C++, ktoré odkazujú na komponent C++ Windows Runtime Component: Ak chcete problém vyriešiť, pridajte nižšie uvedený cieľ na koniec súboru .vcxproj komponentu Windows Runtime:

      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>
      
  • Známe problémy pre Aplikácie WinUI s Single-project MSIX (Prázdna aplikácia, zabalená šablóna):
    • Chýba položka ponuky Package & Publish, kým nereštartujete Visual Studio: Pri vytváraní novej aplikácie s MSIX s jedným projektom vo Visual Studio 2019 aj Visual Studio 2022 pomocou šablóny projektu Blank App, Packaged (WinUI 3 na pracovnej ploche), príkaz na publikovanie projektu sa v ponuke nezobrazí, kým nezatvoríte a znova otvorte Visual Studio.
    • Aplikácia AC# s MSIX s jedným projektom sa neskompiluje bez nainštalovaného voliteľného komponentu „C++ (v14x) Universal Windows Platform Tools“. vyhliadka Nainštalujte nástroje pre vývojárov Ďalšie informácie.
    • Potenciálna chyba pri spustení v aplikácii s MSIX s jedným projektom, ktorá využíva typy definované v odkazovanom komponente Windows Runtime Component: Ak chcete vyriešiť, pridajte manuálne aktivovateľné položky triedy na súbor appxmanifest.xml.
      • Očakávaná chyba v aplikáciách C# je „COMException: Class not Registered (0x80040154 (REGDB_E_CLASSNOTREG)).
      • Očakávaná chyba v aplikáciách C++/WinRT je „winrt::hresult_class_not_registered“.
  • Známe problémy pre Aplikácie WinUI bez balenia MSIX (nezabalené aplikácie):
  • Známe problémy pre balenie a nasadzovanie aplikácií WinUI:
    •  Package príkaz nie je podporovaný v aplikáciách WinUI s MSIX s jedným projektom (prázdna aplikácia, zabalená šablóna). Namiesto toho použite Package & Publish príkaz na vytvorenie balíka MSIX.
    • Ak chcete vytvoriť balík NuGet z knižnice tried C# pomocou Pack príkaz, zabezpečiť aktívny Configuration is Release.
    •  Pack príkaz nie je podporovaný v C++ Windows Runtime Components na vytvorenie balíka NuGet.

Okno

Windows App SDK poskytuje AppWindow trieda, ktorá rozvíja predchádzajúcu ľahko použiteľnú triedu ukážok Windows.UI.WindowManagement.AppWindow a sprístupňuje ju všetkým aplikáciám Windows vrátane Win32, WPF a WinForms.

Nové funkcie

  • AppWindow je rozhranie API na vytváranie okien na vysokej úrovni, ktoré umožňuje ľahko použiteľné scenáre okien, ktoré sa dobre integrujú do používateľského prostredia systému Windows a do iných aplikácií. Predstavuje vysokoúrovňovú abstrakciu kontajnera obsahu aplikácie spravovaného systémom. Toto je kontajner, v ktorom je hosťovaný váš obsah, a predstavuje entitu, s ktorou používatelia interagujú, keď menia veľkosť a presúvajú vašu aplikáciu na obrazovke. Pre vývojárov, ktorí poznajú Win32, možno AppWindow vnímať ako abstrakciu HWND na vysokej úrovni.
  • DisplayArea predstavuje vysokoúrovňovú abstrakciu HMONITORU, riadi sa rovnakými princípmi ako AppWindow.
  • DisplayAreaWatcher umožňuje vývojárovi pozorovať zmeny v topológii zobrazenia a vymenovať oblasti DisplayAreas aktuálne definované v systéme.

Vstup

Toto sú vstupné rozhrania API, ktoré podporujú rozhranie WinUI a poskytujú vývojárom úroveň rozhrania API nižšej úrovne, aby dosiahli pokročilejšie vstupné interakcie.

Nové funkcie

  • Ukazovateľ API: PointerPointPointerPointPropertiesPointEventArgs na podporu získavania informácií o udalostiach ukazovateľa pomocou vstupných rozhraní API XAML.
  • InputPointerSource API: Predstavuje objekt, ktorý je zaregistrovaný na hlásenie vstupu ukazovateľa a poskytuje kurzor ukazovateľa a spracovanie vstupných udalostí pre rozhranie API SwapChainPanel XAML.
  • API kurzora: Umožňuje vývojárom zmeniť bitovú mapu kurzora.
  • GestureRecognizer API: Umožňuje vývojárom rozpoznať určité gestá, ako je potiahnutie, podržanie a kliknutie, keď dostanú informácie o kurzore.

Dôležité obmedzenia

  • Všetko PointerPoint statické výrobné funkcie boli odstránené: GetCurrentPointGetCurrentPointTransformedGetIntermediatePointsGetIntermediatePointsTransformed.
  • Súprava Windows App SDK nepodporuje načítanie PointerPoint objekty s ID ukazovateľov. Namiesto toho môžete použiť PointerPoint členská funkcia GetTransformedPoint na získanie transformovanej verzie existujúcej PointerPoint objekt. Pre medziľahlé body môžete použiť PointEventArgs funkcie člena GetIntermediatePoints a GetTransformedIntermediatePoints.
  • Priame použitie platformy SDK API Windows.UI.Core.CoreDragOperation nebude fungovať s aplikáciami WinUI.
  • PointerPoint vlastnosti RawPosition a ContactRectRaw boli odstránené, pretože sa týkali nepredpovedaných hodnôt, ktoré boli rovnaké ako normálne hodnoty v OS. Použite poloha a ContactRect namiesto toho. Predikcia ukazovateľa je teraz spracovaná pomocou Microsoft.UI.Input.PointerPredictor objekt API.

Životný cyklus aplikácie

Väčšina funkcií životného cyklu aplikácií už existuje na platforme UWP a bola zahrnutá do súpravy Windows App SDK na použitie typmi aplikácií pre stolné počítače, najmä nezabalenými aplikáciami konzoly, aplikáciami Win32, aplikáciami Windows Forms a aplikáciami WPF. Implementáciu týchto funkcií Windows App SDK nemožno použiť v aplikáciách UWP, pretože v samotnej platforme UWP sú ekvivalentné funkcie.

 Dôležité informácie

Ak pracujete na aplikácii UWP, pozrite si usmernenie k migrácii UWP sa dozviete viac o migrácii vašej aplikácie na Windows App SDK.

Aplikácie, ktoré nie sú UWP, môžu byť tiež zabalené do balíkov MSIX. Aj keď tieto aplikácie môžu používať niektoré funkcie životného cyklu aplikácií Windows App SDK, musia používať prístup manifestu, ak je k dispozícii. Nemôžu napríklad používať Windows App SDK RegisterForXXXActivation API a namiesto toho sa musia zaregistrovať na bohatú aktiváciu prostredníctvom manifestu.

Všetky obmedzenia pre zabalené aplikácie sa vzťahujú aj na aplikácie WinUI, ktoré sú zabalené, a existujú ďalšie úvahy, ako je popísané nižšie.

Dôležité úvahy:

  • Bohatá aktivácia: GetActivatedEventArgs
  • Zaregistrujte sa/zrušte registráciu pre bohatú aktiváciu
    • Rozbalené aplikácie: Plne použiteľné.
    • Zabalené aplikácie: Nepoužiteľné, použite namiesto toho manifest MSIX aplikácie.
    • Viac informácií nájdete v časti Bohatá aktivácia.
  • Single/Multi-instance
    • Rozbalené aplikácie: Plne použiteľné.
    • Zabalené aplikácie: Plne použiteľné.
    • aplikácie WinUI: Ak chce aplikácia zistiť ďalšie inštancie a presmerovať aktiváciu, musí tak urobiť čo najskôr a pred inicializáciou akýchkoľvek okien atď. Ak to chcete povoliť, aplikácia musí definovať DISABLE_XAML_GENERATED_MAIN a napísať vlastnú hlavnú (C#) alebo WinMain (C++), kde dokáže vykonať detekciu a presmerovanie.
    • RedirectActivationToAsync je asynchrónne volanie a nemali by ste čakať na asynchrónne volanie, ak je vaša aplikácia spustená v STA. V prípade aplikácií Windows Forms a C# WinUI môžete v prípade potreby vyhlásiť Main za asynchrónne. Pre aplikácie C++ WinUI a C# WPF nemôžete vyhlásiť Main za asynchronné, takže namiesto toho musíte presunúť volanie presmerovania do iného vlákna, aby ste sa uistili, že neblokujete STA.
    • Viac informácií nájdete v časti Inštancia aplikácie.
  • Upozornenia na napájanie/stav
    • Rozbalené aplikácie: Plne použiteľné.
    • Zabalené aplikácie: Plne použiteľné.
    • Viac informácií nájdete v časti riadenie spotreby.

Známy problém:

  • Priradenia typu súboru nesprávne zakódujú %1 na %251 pri nastavovaní šablóny príkazového riadka obslužného programu Verb, čo spôsobí zlyhanie rozbalených aplikácií Win32. Namiesto toho môžete manuálne upraviť hodnotu databázy Registry na %1 ako čiastočné riešenie. Ak cesta k cieľovému súboru obsahuje medzeru, stále zlyhá a neexistuje žiadne riešenie pre tento scenár.
  • Tieto chyby s jednou/viacerými inštanciami budú opravené v pripravovanej oprave:
    • Presmerovanie AppInstance nefunguje pri kompilácii pre x86
    • Registrácia kľúča, jeho zrušenie a opätovná registrácia spôsobí zlyhanie aplikácie

WriteCore

DWriteCore je implementácia Windows App SDK DirectWrite, čo je rozhranie DirectX API pre vysokokvalitné vykresľovanie textu, obrysové písma nezávislé od rozlíšenia a plnú podporu textu a rozloženia Unicode. DWriteCore je forma DirectWrite, ktorá beží na verziách Windowsu až po Windows 10, verzia 1809 (10.0; zostava 17763), a otvára vám dvere na použitie na rôznych platformách.

Vlastnosti DWriteCore obsahuje všetky funkcie DirectWrite, s niekoľkými výnimkami.

Dôležité obmedzenia

  • DWriteCore neobsahuje nasledujúce funkcie DirectWrite:
    • Písma pre jednotlivé relácie
    • Fonty znakov definovaných koncovým používateľom (EUDC).
    • Rozhrania API na streamovanie písma
  • Podpora nízkoúrovňového vykresľovacieho API je čiastočná.
  • DWriteCore nespolupracuje s Direct2D, ale môžete ho použiť IDWriteGlyphRunAnalysis a IDWriteBitmapRenderTarget.

jadro MRT

MRT Core je zjednodušená verzia moderného systému Windows Systém riadenia zdrojov ktorý je distribuovaný ako súčasť Windows App SDK.

Dôležité obmedzenia

  • V projektoch .NET sa zdrojové súbory skopírované a vložené do priečinka projektu neindexujú na F5, ak už bola aplikácia vytvorená. Ako riešenie prestavte aplikáciu. Pozri vydanie 1503 pre viac informácií.
  • V projektoch .NET, keď sa zdrojový súbor pridá do projektu pomocou používateľského rozhrania Visual Studio, súbory nemusia byť predvolene indexované. Pozri vydanie 1786 pre viac info. Ak chcete tento problém vyriešiť, odstráňte položky uvedené nižšie v súbore CSPROJ:

    XML

    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • V prípade nezabalených aplikácií C++ WinUI nie je identifikátor URI prostriedku zostavený správne. Ak chcete tento problém obísť, pridajte do súboru vcxproj nasledovné:

    XML

    <!-- Add the following after <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> -->
    
    <PropertyGroup>
        <AppxPriInitialPath></AppxPriInitialPath>   
    </PropertyGroup>
    

rozvinutie

Nové funkcie a aktualizácie

  • Súpravu Windows App SDK môžete automaticky inicializovať prostredníctvom WindowsPackageType project vlastnosť na načítanie runtime Windows App SDK a volanie rozhraní Windows App SDK API. Pozri Vytvorte aplikáciu WinUI 3 pre pokyny.
  • Nezabalené aplikácie môžu nasadiť Windows App SDK integráciou do samostatnej Windows App SDK .exe inštalačný program do vášho existujúceho MSI alebo inštalačného programu. Ďalšie informácie nájdete v časti Sprievodca nasadením Windows App SDK pre nezabalené aplikácie.
  • Nebalené aplikácie .NET môžu tiež používať .NET wrapper pre bootstrapper API dynamicky získať závislosť od balíka Windows App SDK framework v čase spustenia. Ďalšie informácie o obale .NET nájdete v časti .NET wrapper knižnica.
  • Zabalené aplikácie môžu použiť nasadzovacie API na overenie a zaistenie toho, že všetky požadované balíky sú nainštalované v počítači. Ďalšie informácie o tom, ako funguje rozhranie API nasadenia, nájdete v časti sprievodca nasadením pre zabalené aplikácie.

Dôležité obmedzenia

  • .NET wrapper pre bootstrapper API je určený len na použitie pre nezabalené .NET aplikácie na zjednodušenie prístupu k Windows App SDK.
  • Iba aplikácie v balíku MSIX, ktoré plne dôverujú alebo majú správa balíkov obmedzené schopnosti majú oprávnenie používať nasadzovacie API na inštaláciu závislostí hlavného a samostatného balíka. Podpora pre zabalené aplikácie s čiastočnou dôverou bude k dispozícii v neskorších vydaniach.
  • Keď F5 testuje aplikáciu x86, ktorá používa DeploymentManager.Initialize spôsobe na systéme x64, uistite sa, že je najprv nainštalovaný rámec x64 spustením WindowsAppRuntimeInstall.exe. V opačnom prípade sa stretnete s a NENÁJDENÉ chyba spôsobená tým, že Visual Studio nenasadzuje rámec x64, čo sa bežne vyskytuje pri nasadení obchodu alebo bočnom načítaní.

Ďalšie obmedzenia a známe problémy

  • Žiadna podpora pre akúkoľvek konfiguráciu zostavenia CPU: Kedy pridanie súpravy Windows App SDK do existujúcej aplikácie alebo komponentu .NET, ktorý podporuje Akýkoľvek CPU, musíte zadať požadovanú architektúru: x86x64 or arm64.
  • Inovácia z .NET 5 na .NET 6: Pri inovácii v používateľskom rozhraní Visual Studio môžete naraziť na chyby zostavy. Ako alternatívne riešenie manuálne aktualizujte TargetFrameworkPackage súboru projektu na nižšie uvedené:

    XML

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • Aplikácia MSIX s jedným projektom C# sa neskompiluje, ak nie sú nainštalované nástroje C++ UWP. Ak máte projekt C# Single-project MSIX, budete si musieť nainštalovať C++ (v14x) Univerzálne nástroje platformy Windows voliteľný komponent.
  • Nasledujúci jazyk VSIX sa nenainštaluje do Visual Studio 2019, keď sú nainštalované viaceré verzie Visual Studio 2019. Ak máte nainštalovaných viacero verzií Visual Studio 2019 (napr. Release a Preview) a potom nainštalujte Windows App SDK VSIX pre C++ a C#, druhá inštalácia zlyhá. Vyriešte to tak, že po prvom jazyku VSIX odinštalujte Single-project MSIX Packaging Tools for Visual Studio 2019. vyhliadka túto spätnú väzbu pre ďalšie informácie o tomto probléme.
  • Ak chcete co_await na DispatcherQueue.TryEnqueue metódu, potom použite pokračovať_v popredí pomocná funkcia v Windows Implementation Library (WIL):
    1. Pridajte odkaz na Microsoft.Windows.ImplementationLibrary Balíček NuGet.
    2. Pridať #include <wil/cppwinrt_helpers.h> výpis do súboru s kódom.
    3. Použitie wil::resume_foreground(your_dispatcher); na co_await výsledok.

Prečítajte si viac a nájdite odkazy na stiahnutie v spoločnosti Microsoft tu.

Viac o témach: Windows App SDK 1.0.0, winui 3