Izdan SDK za Microsoft Windows 1.0 Stable, na voljo za prenos (opombe ob izdaji)

Ikona časa branja 12 min. prebrati


Bralci pomagajo pri podpori MSpoweruser. Če kupujete prek naših povezav, lahko prejmemo provizijo. Ikona opisa orodja

Preberite našo stran za razkritje, če želite izvedeti, kako lahko pomagate MSPoweruser vzdrževati uredniško skupino Preberi več

winUI

Po več različicah za predogled je Microsoft pravkar izdal Windows App SDK 1.0.0 Stable, komplet orodij, ki razvijalcem namiznih aplikacij omogoča izdelavo aplikacij s sodobnim uporabniškim vmesnikom Windows, API-ji in funkcijami platforme.

V tej izdaji je Microsoft dodal več novih funkcij iz Windows App SDK 0.8 in stabiliziral težave iz izdaj za predogled 1.0.

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

Windows UI 3

WinUI 3 je okvir domače uporabniške izkušnje (UX) za Windows App SDK.

Nove funkcije in posodobitve:

  • Microsoft je dodal nove kontrole (PipsPager, Expander, BreadcrumbBar) in posodobil obstoječe kontrole, da odražajo najnovejše sloge sistema Windows iz Windows UI 2.6.
  • Enoprojektno pakiranje MSIX je podprto v WinUI z ustvarjanjem nove aplikacije s predlogo »Prazna aplikacija, pakirana ...«.
  • Microsoft zdaj podpira uvajanje aplikacij WinUI 3 brez paketa MSIX v različicah sistema Windows 1809 in novejših. Prosim za ogled Ustvarite nepakirano namizno aplikacijo WinUI 3 Za dodatne informacije.
  • Projekti WinUI 3 lahko zdaj svojo ciljno različico nastavijo na Windows 10, različica 1809. Prej so bili lahko nastavljeni le na različico 1903.
  • V Visual Studio 2022 Preview 5 in GA so podprta orodna vrstica v aplikaciji, Hot Reload in Live Visual Tree za paketne aplikacije WinUI.

Pomembne omejitve:

  • Znane težave za tako zapakirane kot nepakirane aplikacije WinUI:
    • Napaka med izvajanjem v aplikacijah C++, ki se sklicujejo na komponento C++ Windows Runtime Component: Za rešitev dodajte spodnji cilj na konec .vcxproj komponente Windows Runtime Component:

      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>
      
  • Znane težave za Aplikacije WinUI z MSIX z enim projektom (Prazna aplikacija, pakirana predloga):
    • Manjka element menija Package & Publish, dokler ne znova zaženete Visual Studio: Ko ustvarjate novo aplikacijo z enim projektom MSIX v Visual Studio 2019 in Visual Studio 2022 z uporabo predloge projekta Prazna aplikacija, pakirana (WinUI 3 na namizju), se ukaz za objavo projekta ne prikaže v meniju, dokler ne zaprete in znova odprite Visual Studio.
    • Aplikacija AC# z MSIX z enim projektom ne bo prevedena brez nameščene izbirne komponente »C++ (v14x) Universal Windows Platform Tools«. Ogled Namestite orodja za razvijalce Za dodatne informacije.
    • Potencialna napaka med izvajanjem v aplikaciji z MSIX z enim projektom, ki uporablja tipe, definirane v referenčni komponenti izvajalnega okolja Windows: Če želite rešiti, ročno dodajte aktivirani vnosi razreda na appxmanifest.xml.
      • Pričakovana napaka v aplikacijah C# je »COMException: razred ni registriran (0x80040154 (REGDB_E_CLASSNOTREG)).
      • Pričakovana napaka v aplikacijah C++/WinRT je "winrt::hresult_class_not_registered".
  • Znane težave za Aplikacije WinUI brez embalaže MSIX (nepakirane aplikacije):
  • Znane težave za pakiranje in uvajanje aplikacij WinUI:
    • Package ukaz ni podprt v aplikacijah WinUI z MSIX z enim projektom (prazna aplikacija, pakirana predloga). Namesto tega uporabite Package & Publish ukaz za ustvarjanje paketa MSIX.
    • Če želite ustvariti paket NuGet iz knjižnice razreda C# z Pack ukaz, zagotovite aktivno Configuration is Release.
    • Pack ukaz ni podprt v komponentah izvajalnega okolja C++ Windows za ustvarjanje paketa NuGet.

Okna

SDK za aplikacije za Windows ponuja AppWindow razred, ki razvija prejšnji razred za predogled Windows.UI.WindowManagement.AppWindow, enostaven za uporabo, in ga omogoča vsem aplikacijam Windows, vključno z Win32, WPF in WinForms.

Nove funkcije

  • AppWindow je okenski API na visoki ravni, ki omogoča preproste za uporabo okenske scenarije, ki se dobro integrirajo z uporabniško izkušnjo sistema Windows in z drugimi aplikacijami. Predstavlja abstrakcijo na visoki ravni sistemsko upravljanega vsebnika vsebine aplikacije. To je vsebnik, v katerem gostuje vaša vsebina, in predstavlja entiteto, s katero uporabniki komunicirajo, ko spremenijo velikost in premaknejo vašo aplikacijo na zaslon. Za razvijalce, ki poznajo Win32, je AppWindow mogoče razumeti kot abstrakcijo HWND na visoki ravni.
  • DisplayArea predstavlja abstrakcijo HMONITOR-ja na visoki ravni, ki sledi enakim načelom kot AppWindow.
  • DisplayAreaWatcher omogoča razvijalcu, da opazuje spremembe v topologiji zaslona in našteje DisplayAreas, ki so trenutno definirana v sistemu.

vhod

To so vhodni API-ji, ki podpirajo WinUI in zagotavljajo nižjo raven API-ja za razvijalce, da dosežejo naprednejše vhodne interakcije.

Nove funkcije

  • API-ji kazalca: PointerPointLastnosti PointerPointin PointEventArgs za podporo pridobivanju informacij o dogodkih kazalca z API-ji za vnos XAML.
  • API InputPointerSource: Predstavlja objekt, ki je registriran za poročanje o vhodu kazalca in zagotavlja ravnanje kazalca in vhodnih dogodkov za API SwapChainPanel XAML.
  • API kazalca: Razvijalcem omogoča spreminjanje bitne slike kazalca.
  • API GestureRecognizer: Omogoča razvijalcem, da prepoznajo določene poteze, kot so povleci, zadrževanje in klik, ko dobijo informacije o kazalcu.

Pomembne omejitve

  • vsi PointerPoint statične tovarniške funkcije so bile odstranjene: GetCurrentPointGetCurrentPointTransformedPridobite IntermediatePointsin GetIntermediatePointsTransformed.
  • SDK za aplikacije Windows ne podpira pridobivanja PointerPoint predmeti z ID-ji kazalca. Namesto tega lahko uporabite PointerPoint funkcija člana GetTransformedPoint za pridobitev preoblikovane različice obstoječega PointerPoint predmet. Za vmesne točke lahko uporabite PointEventArgs funkcije člana Pridobite IntermediatePoints in GetTransformedIntermediatePoints.
  • Neposredna uporaba API-ja za platformo SDK Windows.UI.Core.CoreDragOperation ne bo deloval z aplikacijami WinUI.
  • PointerPoint Lastnosti RawPosition in Kontaktirajte RectRaw so bile odstranjene, ker so se nanašale na nepredvidene vrednosti, ki so bile enake normalnim vrednostim v OS. Uporaba položaj in ContactRect namesto tega. Napovedovanje kazalca se zdaj obravnava z Microsoft.UI.Input.PointerPredictor Objekt API.

Življenjski cikel aplikacije

Večina funkcij življenjskega cikla aplikacije že obstaja na platformi UWP in je bila prenesena v komplet za razvoj programske opreme Windows App SDK za uporabo za vrste namiznih aplikacij, zlasti nepakirane aplikacije konzole, aplikacije Win32, aplikacije Windows Forms in aplikacije WPF. Implementacije SDK za aplikacije Windows teh funkcij ni mogoče uporabiti v aplikacijah UWP, saj so enakovredne funkcije v sami platformi UWP.

 Pomembno

Če delate na aplikaciji UWP, glejte navodila za selitev UWP če želite izvedeti več o selitvi aplikacije na komplet za razvoj programske opreme Windows.

Aplikacije, ki niso UWP, je mogoče zapakirati tudi v pakete MSIX. Čeprav lahko te aplikacije uporabljajo nekatere funkcije življenjskega cikla aplikacije SDK za aplikacije Windows, morajo uporabljati pristop manifesta, kjer je ta na voljo. Ne morejo na primer uporabljati kompleta za razvoj programske opreme za aplikacije Windows Registriraj se zaXXXActivation API-je in se morajo namesto tega registrirati za bogato aktivacijo prek manifesta.

Vse omejitve za pakirane aplikacije veljajo tudi za aplikacije WinUI, ki so pakirane, poleg tega pa obstajajo dodatni premisleki, kot je opisano spodaj.

Pomembni razlogi:

  • Bogata aktivacija: GetActivatedEventArgs
  • Registrirajte se/prekličite registracijo za bogato aktivacijo
    • Nepakirane aplikacije: Popolnoma uporabno.
    • Pakirane aplikacije: Namesto tega ni mogoče uporabiti manifesta MSIX aplikacije.
    • Za več informacij glejte Bogata aktivacija.
  • Enkratni/več primerkov
    • Nepakirane aplikacije: Popolnoma uporabno.
    • Pakirane aplikacije: Popolnoma uporabno.
    • WinUI aplikacije: Če želi aplikacija zaznati druge primere in preusmeriti aktivacijo, mora to storiti čim prej in preden inicializira okna itd. Če želite to omogočiti, mora aplikacija definirati DISABLE_XAML_GENERATED_MAIN in napisati glavno (C#) ali WinMain (C++), kjer lahko izvede zaznavanje in preusmeritev.
    • RedirectActivationToAsync je asinhroniziran klic in ne bi smeli čakati na asinhronizirani klic, če se vaša aplikacija izvaja v STA. Za aplikacije Windows Forms in C# WinUI lahko po potrebi razglasite Main za asinhronizirano. Za aplikacije C++ WinUI in C# WPF ne morete razglasiti Main za asinhroniziranega, zato morate preusmeriti klic v drugo nit, da zagotovite, da ne blokirate STA.
    • Za več informacij glejte Instanciranje aplikacije.
  • Obvestila o moči/stanjih
    • Nepakirane aplikacije: Popolnoma uporabno.
    • Pakirane aplikacije: Popolnoma uporabno.
    • Za več informacij glejte Upravljanje porabe.

Znana težava:

  • Povezave vrste datoteke napačno kodirajo %1 v %251, ko nastavijo predlogo ukazne vrstice upravljalnika glagola, kar zruši nepakirane aplikacije Win32. Namesto tega lahko ročno uredite vrednost registra na %1 kot delno rešitev. Če ima pot ciljne datoteke prostor, potem še vedno ne bo uspela in za ta scenarij ni rešitve.
  • Te napake z enim ali več primerki bodo odpravljene v prihajajočem servisnem popravku:
    • Preusmeritev AppInstance ne deluje, ko je prevedena za x86
    • Če registrirate ključ, ga odjavite in ponovno registrirate, se aplikacija zruši

WriteCore

DWriteCore je implementacija SDK za aplikacije za Windows DirectWrite, ki je API DirectX za visokokakovostno upodabljanje besedila, pisave orisa, neodvisne od ločljivosti, in popolno podporo za besedilo in postavitev Unicode. DWriteCore je oblika DirectWrite, ki deluje v različicah operacijskega sistema Windows do Windows 10, različica 1809 (10.0; Build 17763) in vam odpira vrata za uporabo med platformami.

Lastnosti DWriteCore vsebuje vse funkcije DirectWrite, z nekaj izjemami.

Pomembne omejitve

  • DWriteCore ne vsebuje naslednjih funkcij DirectWrite:
    • Pisave na sejo
    • Pisave s končnim uporabnikom (EUDC).
    • API-ji za pretakanje pisav
  • Podpora API-ju za upodabljanje na nizki ravni je delna.
  • DWriteCore ne deluje z Direct2D, vendar ga lahko uporabite IDWriteGlyphRunAnalysis in IDWriteBitmapRenderTarget.

Jedro MRT

MRT Core je poenostavljena različica sodobnega sistema Windows Sistem upravljanja virov ki se distribuira kot del kompleta SDK za aplikacije za Windows.

Pomembne omejitve

  • V projektih .NET datoteke virov, kopirane in prilepljene v mapo projekta, niso indeksirane na F5, če je bila aplikacija že zgrajena. Kot rešitev znova zgradite aplikacijo. Glej izdaja 1503 za več informacij.
  • V projektih .NET, ko je datoteka z viri dodana projektu z uporabniškim vmesnikom Visual Studio, datoteke morda ne bodo privzeto indeksirane. Glej izdaja 1786 za več informacij. Če želite odpraviti to težavo, odstranite spodnje vnose v datoteki CSPROJ:

    XML

    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • Za nepakirane aplikacije C++ WinUI URI vira ni pravilno zgrajen. Če želite odpraviti to težavo, dodajte naslednje v vcxproj:

    XML

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

Deployment

Nove funkcije in posodobitve

  • SDK za aplikacije Windows lahko samodejno inicializirate prek WindowsPackageType project lastnost za nalaganje izvajalnega okolja Windows App SDK in klic API-jev SDK za aplikacije za Windows. Glej Ustvarite aplikacijo WinUI 3 za navodila.
  • Nepakirane aplikacije lahko namestijo komplet za razvoj programske opreme za aplikacije za Windows z integracijo v samostojni komplet za razvoj programske opreme Windows .exe namestitveni program v vaš obstoječi MSI ali namestitveni program. Za več informacij glejte Vodnik za uvajanje kompleta SDK za aplikacije za nepakirane aplikacije.
  • Nepakirane aplikacije .NET lahko uporabljajo tudi ovoj .NET za zagonski API dinamično prevzeti odvisnost od okvirnega paketa SDK za aplikacije Windows med izvajanjem. Za več informacij o ovoju .NET glejte Knjižnica ovoja .NET.
  • Pakirane aplikacije lahko uporabljajo API za uvajanje, da preverijo in zagotovijo, da so vsi zahtevani paketi nameščeni na napravi. Za več informacij o tem, kako deluje API za uvajanje, glejte vodnik za uvajanje zapakiranih aplikacij.

Pomembne omejitve

  • Ovitek .NET za API zagonskega zagona je namenjen samo uporabi nepakiranih aplikacij .NET za poenostavitev dostopa do kompleta SDK za aplikacije Windows.
  • Samo zapakirane aplikacije MSIX, ki jim popolnoma zaupamo ali imajo upravljanje paketov omejene zmogljivosti imajo dovoljenje za uporabo API-ja za razmestitev za namestitev odvisnosti glavnega in posameznega paketa. Podpora za zapakirane aplikacije z delnim zaupanjem bo na voljo v kasnejših izdajah.
  • Ko F5 preizkuša aplikacijo x86, ki uporablja DeploymentManager.Initialize v sistemu x64, zagotovite, da je okvir x64 najprej nameščen tako, da zaženete datoteko WindowsAppRuntimeInstall.exe. V nasprotnem primeru boste naleteli na a NI NAJDENO napaka zaradi tega, ker Visual Studio ne razmesti ogrodja x64, kar se običajno pojavi z razmestitvijo Store ali stranskim nalaganjem.

Druge omejitve in znane težave

  • Ni podpore za kakršno koli konfiguracijo gradnje CPU: Kdaj dodajanje SDK za aplikacije za Windows na obstoječo aplikacijo .NET ali komponento, ki podpira Vsak CPU, morate določiti želeno arhitekturo: x86x64 or arm64.
  • Nadgradnja z .NET 5 na .NET 6: Pri nadgradnji v uporabniškem vmesniku Visual Studio lahko naletite na napake pri gradnji. Kot rešitev ročno posodobite TargetFrameworkPackage svoje projektne datoteke na spodnje:

    XML

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • Aplikacija MSIX za en projekt C# se ne prevede, če orodja C++ UWP niso nameščena. Če imate C# projekt MSIX z enim projektom, boste morali namestiti datoteko C++ (v14x) univerzalna orodja za platformo Windows izbirna komponenta.
  • Naslednjega jezika VSIX ni mogoče namestiti v Visual Studio 2019, če je nameščenih več različic Visual Studio 2019. Če imate nameščenih več različic Visual Studio 2019 (npr. Release in Preview) in nato namestite Windows App SDK VSIX za oba C++ in C#, druga namestitev ne bo uspela. Če želite to rešiti, odstranite orodja za pakiranje enega projekta MSIX za Visual Studio 2019 po prvem jeziku VSIX. Ogled ta povratna informacija za dodatne informacije o tej zadevi.
  • Če želite co_await o DispatcherQueue.TryEnqueue metodo, nato uporabite resume_foreground pomožna funkcija v Knjižnica za implementacijo sistema Windows (WIL):
    1. Dodajte sklic na Microsoft.Windows.ImplementationLibrary NuGet paket.
    2. Dodaj #include <wil/cppwinrt_helpers.h> izjavo v vašo kodno datoteko.
    3. Uporaba wil::resume_foreground(your_dispatcher); do co_await rezultat.

Preberite več in poiščite povezave za prenos pri Microsoftu tukaj.

Več o temah: SDK za aplikacije za Windows 1.0.0, winui 3

Pustite Odgovori

Vaš e-naslov ne bo objavljen. Obvezna polja so označena *