Izdan SDK za Microsoft Windows 1.0 Stable, dostupan za preuzimanje (Napomene o izdanju)

Ikona vremena čitanja 12 min. čitati


Čitatelji pomažu pri podršci MSpoweruser. Možda ćemo dobiti proviziju ako kupujete putem naših veza. Ikona opisa alata

Pročitajte našu stranicu za otkrivanje kako biste saznali kako možete pomoći MSPoweruseru da održi urednički tim Čitaj više

winUI

Nakon nekoliko verzija za pregled, Microsoft je upravo izdao Windows App SDK 1.0.0 Stable, skup alata koji omogućuje programerima stolnih aplikacija da izgrade aplikacije s modernim Windows UI, API-jem i značajkama platforme.

U ovom izdanju, Microsoft je dodao više novih značajki iz Windows App SDK 0.8 i stabilizirao probleme iz 1.0 Preview izdanja.

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

WindowsUI 3

WinUI 3 je izvorni okvir korisničkog iskustva (UX) za Windows App SDK.

Nove značajke i ažuriranja:

  • Microsoft je dodao nove kontrole (PipsPager, Expander, BreadcrumbBar) i ažurirao postojeće kontrole kako bi odražavale najnovije Windows stilove iz WindowsUI 2.6.
  • Jednoprojektno MSIX pakiranje podržano je u WinUI-u stvaranjem nove aplikacije pomoću predloška "Prazna aplikacija, pakirano...".
  • Microsoft sada podržava implementaciju WinUI 3 aplikacija bez MSIX-pakiranja na Windows verzijama 1809 i novijim. Molimo pogledajte Napravite WinUI 3 neupakiranu desktop aplikaciju za dodatne informacije.
  • Projekti WinUI 3 sada mogu postaviti svoju ciljnu verziju na Windows 10, verziju 1809. Prije su mogli biti postavljeni samo na verziju 1903.
  • Alatna traka unutar aplikacije, Hot Reload i Live Visual Tree za WinUI paketne aplikacije podržani su u Visual Studio 2022 Preview 5 i GA.

Važna ograničenja:

  • Poznati problemi za i zapakirane i neupakirane WinUI aplikacije:
    • Pogreška tijekom izvođenja u C++ aplikacijama koje upućuju na C++ Windows Runtime komponentu: Da biste to riješili, dodajte cilj u nastavku na kraj .vcxproj komponente 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>
      
  • Poznati problemi za WinUI aplikacije s jednim projektom MSIX (Prazna aplikacija, upakirani predložak):
    • Nedostaje stavka izbornika Package & Publish dok ne ponovno pokrenete Visual Studio: Prilikom izrade nove aplikacije s MSIX-om za jedan projekt u Visual Studio 2019 i Visual Studio 2022 pomoću predloška projekta Prazna aplikacija, pakirana (WinUI 3 na stolnoj površini), naredba za objavljivanje projekta ne pojavljuje se u izborniku dok ne zatvorite i ponovno otvorite Visual Studio.
    • Aplikacija AC# s MSIX-om za jedan projekt neće se kompilirati bez instalirane dodatne komponente "C++ (v14x) Universal Windows Platform Tools". Pogled Instalirajte alate za razvojne programere za dodatne informacije.
    • Potencijalna pogreška tijekom izvođenja u aplikaciji s MSIX-om jednog projekta koji koristi tipove definirane u referenciranoj komponenti Windows vremena izvođenja: Da biste riješili, ručno dodajte unosi klasa koji se mogu aktivirati u appxmanifest.xml.
      • Očekivana pogreška u C# aplikacijama je “COMException: klasa nije registrirana (0x80040154 (REGDB_E_CLASSNOTREG)).
      • Očekivana pogreška u C++/WinRT aplikacijama je "winrt::hresult_class_not_registered".
  • Poznati problemi za WinUI aplikacije bez MSIX-pakiranja (nepakirane aplikacije):
  • Poznati problemi za pakiranje i implementaciju WinUI aplikacija:
    • Korištenje električnih romobila ističe Package naredba nije podržana u WinUI aplikacijama s MSIX s jednim projektom (prazna aplikacija, pakirani predložak). Umjesto toga, koristite Package & Publish naredba za stvaranje MSIX paketa.
    • Za kreiranje NuGet paketa iz C# biblioteke klasa s Pack zapovijed, osigurati aktiv Configuration is Release.
    • Korištenje električnih romobila ističe Pack naredba nije podržana u C++ Windows Runtime komponentama za stvaranje NuGet paketa.

Prozor

Windows App SDK pruža AppWindow klasa koja razvija prethodnu klasu pregleda Windows.UI.WindowManagement.AppWindow laku za korištenje i čini je dostupnom svim Windows aplikacijama, uključujući Win32, WPF i WinForms.

Nove značajke

  • AppWindow je prozorski API visoke razine koji omogućuje jednostavne scenarije prozora koji se dobro integriraju s korisničkim iskustvom sustava Windows i drugim aplikacijama. Predstavlja apstrakciju na visokoj razini spremnika sadržaja aplikacije kojim upravlja sustav. Ovo je spremnik u kojem se nalazi vaš sadržaj i predstavlja entitet s kojim korisnici stupaju u interakciju kada mijenjaju veličinu i premještaju vašu aplikaciju na zaslon. Za programere koji su upoznati s Win32, AppWindow se može promatrati kao apstrakcija HWND-a visoke razine.
  • DisplayArea predstavlja apstrakciju HMONITOR-a visoke razine, slijedi ista načela kao AppWindow.
  • DisplayAreaWatcher omogućuje razvojnom programeru da promatra promjene u topologiji prikaza i nabraja DisplayAreas trenutno definirana u sustavu.

Ulazni

To su ulazni API-ji koji podržavaju WinUI i pružaju nižu razinu API površine za razvojne programere kako bi postigli naprednije ulazne interakcije.

Nove značajke

  • API-ji pokazivača: PointerPointPointerPointPropertiesPointEventArgs za podršku dohvaćanju informacija o događaju pokazivača s XAML ulaznim API-jima.
  • InputPointerSource API: Predstavlja objekt koji je registriran za izvješćivanje o unosu pokazivača i pruža kursor pokazivača i rukovanje događajima unosa za XAML-ov SwapChainPanel API.
  • API pokazivača: Omogućuje programerima promjenu bitmape kursora.
  • API za GestureRecognizer: Omogućuje programerima da prepoznaju određene geste kao što su povlačenje, zadržavanje i klik kada im se daju informacije o pokazivaču.

Važna ograničenja

  • Svi PointerPoint statičke tvorničke funkcije su uklonjene: GetCurrentPointGetCurrentPointTransformedGet IntermediatePointsGetIntermediatePointsTransformed.
  • SDK za Windows aplikacije ne podržava dohvaćanje PointerPoint objekti s ID-ovima pokazivača. Umjesto toga, možete koristiti PointerPoint funkcija člana GetTransformedPoint za dohvaćanje transformirane verzije postojećeg PointerPoint objekt. Za međutočke možete koristiti PointEventArgs funkcije člana Get IntermediatePoints i GetTransformedIntermediatePoints.
  • Izravna upotreba platformskog SDK API-ja Windows.UI.Core.CoreDragOperation neće raditi s WinUI aplikacijama.
  • PointerPoint Svojstva RawPosition i Kontaktirajte RectRaw su uklonjene jer su se odnosile na nepredviđene vrijednosti, koje su bile iste kao i normalne vrijednosti u OS-u. Koristiti Položaj i KontaktRect umjesto toga. Predviđanje pokazivača sada se obrađuje s Microsoft.UI.Input.PointerPredictor API objekt.

Životni ciklus aplikacije

Većina značajki životnog ciklusa aplikacije već postoji na UWP platformi i unesene su u Windows App SDK za korištenje od strane tipova aplikacija za stolna računala, posebno neupakiranih konzolnih aplikacija, Win32 aplikacija, Windows Forms aplikacija i WPF aplikacija. Implementacija SDK za Windows aplikacije ovih značajki ne može se koristiti u UWP aplikacijama, budući da postoje ekvivalentne značajke u samoj UWP platformi.

 Važno

Ako radite na UWP aplikaciji, pogledajte smjernice za migraciju UWP-a da biste saznali više o premještanju vaše aplikacije na Windows App SDK.

Aplikacije koje nisu UWP također se mogu pakirati u MSIX pakete. Iako ove aplikacije mogu koristiti neke od značajki životnog ciklusa aplikacije Windows SDK aplikacije, moraju koristiti manifestni pristup tamo gdje je to dostupno. Na primjer, ne mogu koristiti Windows App SDK Registrirajte se za XXXaktivaciju API-ja i umjesto toga se moraju registrirati za bogatu aktivaciju putem manifesta.

Sva ograničenja za pakirane aplikacije također se odnose na WinUI aplikacije, koje su pakirane, a postoje i dodatna razmatranja kako je opisano u nastavku.

Važna razmatranja:

  • Bogata aktivacija: GetActivatedEventArgs
  • Registrirajte se/Odjavite se za bogatu aktivaciju
    • Neupakirane aplikacije: Potpuno upotrebljiv.
    • Pakirane aplikacije: Nije moguće koristiti MSIX manifest aplikacije umjesto toga.
    • Za više informacija pogledajte Bogata aktivacija.
  • Jedno/više instanciranje
    • Neupakirane aplikacije: Potpuno upotrebljiv.
    • Pakirane aplikacije: Potpuno upotrebljiv.
    • WinUI aplikacije: Ako aplikacija želi otkriti druge instance i preusmjeriti aktivaciju, mora to učiniti što je prije moguće i prije inicijalizacije prozora itd. Da bi to omogućila, aplikacija mora definirati DISABLE_XAML_GENERATED_MAIN i napisati prilagođeni glavni (C#) ili WinMain (C++) gdje može obaviti otkrivanje i preusmjeravanje.
    • RedirectActivationToAsync je asinkroni poziv i ne biste trebali čekati na asinkroni poziv ako se vaša aplikacija izvodi u STA. Za Windows Forms i C# WinUI aplikacije, ako je potrebno, možete deklarirati Main asinc. Za C++ WinUI i C# WPF aplikacije, ne možete deklarirati Main kao asinkronu, pa umjesto toga morate premjestiti poziv preusmjeravanja na drugu nit kako biste bili sigurni da ne blokirate STA.
    • Za više informacija pogledajte Instanciranje aplikacije.
  • Obavijesti o snazi/stanju
    • Neupakirane aplikacije: Potpuno upotrebljiv.
    • Pakirane aplikacije: Potpuno upotrebljiv.
    • Za više informacija pogledajte Upravljanje napajanjem.

Poznati problem:

  • Asocijacije vrste datoteke pogrešno kodiraju %1 u %251 kada postavljaju predložak naredbenog retka rukovatelja glagola, što ruši neupakirane Win32 aplikacije. Umjesto toga možete ručno urediti vrijednost registra tako da bude %1 kao djelomično rješenje. Ako put ciljne datoteke ima prostor u sebi, onda će i dalje propasti i za taj scenarij ne postoji rješenje.
  • Ove greške s pojedinačnim/višestrukim instancama bit će ispravljene u nadolazećoj zakrpi za servisiranje:
    • AppInstance preusmjeravanje ne radi kada se prevede za x86
    • Registriranje ključa, poništavanje njegove registracije i ponovna registracija uzrokuje pad aplikacije

WriteCore

DWriteCore je implementacija Windows App SDK DirectWrite, što je DirectX API za visokokvalitetno prikazivanje teksta, obrisne fontove neovisne o razlučivosti i punu podršku za Unicode tekst i izgled. DWriteCore je oblik DirectWrite-a koji radi na verzijama sustava Windows do Windows 10, verzija 1809 (10.0; Build 17763) i otvara vam vrata za korištenje na različitim platformama.

Značajke DWriteCore sadrži sve značajke DirectWrite-a, uz nekoliko iznimaka.

Važna ograničenja

  • DWriteCore ne sadrži sljedeće značajke DirectWrite:
    • Fontovi po sesiji
    • Fontovi znakova definiranih krajnjim korisnikom (EUDC).
    • API-ji za strujanje fontova
  • Podrška za API za iscrtavanje niske razine je djelomična.
  • DWriteCore ne radi s Direct2D, ali možete ga koristiti IDWriteGlyphRunAnalysis i IDWriteBitmapRenderTarget.

MRT Jezgra

MRT Core je pojednostavljena verzija modernog sustava Windows Sustav upravljanja resursima koji se distribuira kao dio paketa SDK za Windows aplikacije.

Važna ograničenja

  • U .NET projektima datoteke resursa kopirane i zalijepljene u mapu projekta nisu indeksirane na F5 ako je aplikacija već izgrađena. Kao rješenje, ponovno izgradite aplikaciju. Vidjeti broj 1503 za više informacija.
  • U .NET projektima, kada se projektu doda datoteka resursa pomoću korisničkog sučelja Visual Studio, datoteke možda neće biti indeksirane prema zadanim postavkama. Vidjeti broj 1786 za više informacija. Da biste zaobišli ovaj problem, uklonite unose u nastavku u CSPROJ datoteci:

    XML

    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • Za nepakirane C++ WinUI aplikacije, URI resursa nije ispravno izgrađen. Da biste zaobišli ovaj problem, dodajte sljedeće u vcxproj:

    XML

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

razvoj

Nove značajke i ažuriranja

  • Možete automatski inicijalizirati Windows App SDK putem WindowsPackageType project svojstvo za učitavanje vremena izvođenja Windows App SDK i pozivanje API-ja za Windows App SDK. Vidjeti Napravite WinUI 3 aplikaciju za upute.
  • Neupakirane aplikacije mogu implementirati Windows App SDK integracijom u samostalni Windows App SDK .exe instalacijski program u vaš postojeći MSI ili program za postavljanje. Za više informacija pogledajte Vodič za implementaciju SDK-a za Windows aplikacije za neupakirane aplikacije.
  • Neupakirane .NET aplikacije također mogu koristiti .NET omot za bootstrapper API da dinamički preuzme ovisnost o paketu okvira Windows App SDK u vrijeme izvođenja. Za više informacija o .NET omotu pogledajte .NET knjižnica omota.
  • Pakirane aplikacije mogu koristiti API za implementaciju za provjeru i osiguranje da su svi potrebni paketi instalirani na stroj. Za više informacija o tome kako funkcionira API za implementaciju, pogledajte vodič za implementaciju pakiranih aplikacija.

Važna ograničenja

  • .NET omot za bootstrapper API namijenjen je samo za upotrebu od strane neupakiranih .NET aplikacija kako bi se pojednostavio pristup paketu SDK za Windows aplikacije.
  • Samo MSIX pakirane aplikacije koje imaju puno povjerenje ili imaju upravljanje paketima ograničene sposobnosti imaju dopuštenje za korištenje API-ja za implementaciju za instalaciju ovisnosti glavnog i pojedinačnog paketa. Podrška za aplikacije u paketu s djelomičnim povjerenjem dolazi u kasnijim izdanjima.
  • Kada F5 testira x86 aplikaciju koja koristi DeploymentManager.Inicijalizacija metoda na x64 sustavu, osigurajte da je x64 framework prvo instaliran pokretanjem WindowsAppRuntimeInstall.exe. Inače ćete naići na a NIJE PRONAĐENO pogreška zbog toga što Visual Studio ne implementira x64 framework, što se obično događa kroz implementaciju Storea ili bočno učitavanje.

Ostala ograničenja i poznati problemi

  • Nema podrške za bilo koju konfiguraciju CPU-a: Kada dodavanje paketa SDK za Windows aplikacije na postojeću .NET aplikaciju ili komponentu koja podržava Bilo koji CPU, morate navesti željenu arhitekturu: x86x64 or arm64.
  • Nadogradnja s .NET 5 na .NET 6: Prilikom nadogradnje u korisničkom sučelju Visual Studio možete naići na pogreške pri izradi. Kao zaobilazno rješenje, ručno ažurirajte TargetFrameworkPackage svoje projektne datoteke na dolje:

    XML

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • C# MSIX aplikacija za jedan projekt ne kompajlira se ako C++ UWP alati nisu instalirani. Ako imate C# MSIX projekt s jednim projektom, morat ćete instalirati C++ (v14x) Univerzalni alati za Windows platformu opciona komponenta.
  • Sljedeći jezik VSIX ne uspijeva se instalirati u Visual Studio 2019 kada je instalirano više verzija Visual Studio 2019. Ako imate instalirano više verzija Visual Studio 2019 (npr. Izdanje i Pregled), a zatim instalirajte Windows App SDK VSIX za oba C++ i C#, druga instalacija neće uspjeti. Da biste to riješili, deinstalirajte alate za pakiranje MSIX za jedan projekt za Visual Studio 2019 nakon prvog jezika VSIX. Pogled ovu povratnu informaciju za dodatne informacije o ovom problemu.
  • Ako želite co_await na DispatcherQueue.TryEnqueue metodu, a zatim upotrijebite životopis_prednji plan pomoćna funkcija u Knjižnica implementacije sustava Windows (WIL):
    1. Dodajte referencu na Microsoft.Windows.ImplementationLibrary NuGet paket.
    2. Dodaj #include <wil/cppwinrt_helpers.h> izjavu u vašu datoteku koda.
    3. Koristiti wil::resume_foreground(your_dispatcher); do co_await rezultat.

Pročitajte više i pronađite veze za preuzimanje na Microsoftu ovdje.

Više o temama: SDK za Windows aplikacije 1.0.0, winui 3

Ostavi odgovor

Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena *