Microsoft Windows App SDK 1.0 Kararlı yayınlandı, indirilebilir (Sürüm Notları)

Okuma zamanı simgesi 12 dk. okuman


Okuyucular MSpoweruser'ı desteklemeye yardımcı olur. Bağlantılarımız aracılığıyla satın alırsanız komisyon alabiliriz. Araç İpucu Simgesi

MSPoweruser'ın editör ekibini ayakta tutmasına nasıl yardımcı olabileceğinizi öğrenmek için açıklama sayfamızı okuyun. Daha fazla

winUI

Birkaç Önizleme derlemesinden sonra Microsoft, masaüstü uygulama geliştiricilerine modern bir Windows kullanıcı arabirimi, API'ler ve platform özellikleriyle uygulamalar oluşturma yetkisi veren bir araç seti olan Windows App SDK 1.0.0 Stable'ı piyasaya sürdü.

Bu sürümde Microsoft, Windows App SDK 0.8'den çok sayıda yeni özellik ekledi ve 1.0 Önizleme sürümlerinden sorunları stabilize etti.

[lwptoc title=”WindowsAppSDK 1.0 Kararlı” genişlik=”%30” kayan nokta=”sağ”]

Windows Kullanıcı Arayüzü 3

WinUI 3, Windows App SDK için yerel kullanıcı deneyimi (UX) çerçevesidir.

Yeni özellikler ve güncellemeler:

  • Microsoft, yeni kontroller (PipsPager, Expander, BreadcrumbBar) ekledi ve mevcut kontrolleri, en son Windows stillerini yansıtacak şekilde güncelledi. Windows Kullanıcı Arayüzü 2.6.
  • Tek projeli MSIX paketleme, WinUI'de “Boş Uygulama, Paketlenmiş…” şablonu kullanılarak yeni bir uygulama oluşturularak desteklenir.
  • Microsoft artık Windows 3 ve üzeri sürümlerde MSIX paketi olmadan WinUI 1809 uygulamalarının dağıtılmasını desteklemektedir. lütfen görüntüleyin Bir WinUI 3 paketlenmemiş masaüstü uygulaması oluşturun Ek bilgi için.
  • WinUI 3 projeleri artık hedef sürümlerini Windows 10, sürüm 1809'a indirebilir. Önceden, yalnızca 1903 sürümüne kadar ayarlanabiliyorlardı.
  • Uygulama içi araç çubuğu, Hızlı Yeniden Yükleme ve WinUI paket uygulamaları için Canlı Görsel Ağacı, Visual Studio 2022 Önizleme 5 ve GA'da desteklenir.

Önemli sınırlamalar:

  • Için bilinen sorunlar hem paketlenmiş hem de paketlenmemiş WinUI uygulamaları:
    • C++ Windows Çalışma Zamanı Bileşenine başvuran C++ uygulamalarında çalışma zamanı hatası: Çözümlemek için aşağıdaki hedefi Windows Çalışma Zamanı Bileşeninin .vcxproj dosyasının sonuna ekleyin:

      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>
      
  • Için bilinen sorunlar Tek proje MSIX ile WinUI uygulamaları (Boş Uygulama, Paketlenmiş şablon):
    • Visual Studio'yu yeniden başlatana kadar Paketle ve Yayınla menü öğesi eksik: Boş Uygulama, Paketlenmiş (Masaüstünde WinUI 2019) proje şablonunu kullanarak hem Visual Studio 2022'da hem de Visual Studio 3'de Single-project MSIX ile yeni bir uygulama oluştururken, siz kapatana kadar projeyi yayınlama komutu menüde görünmez ve Visual Studio'yu yeniden açın.
    • Tek projeli MSIX'li AC# uygulaması, isteğe bağlı "C++ (v14x) Evrensel Windows Platform Araçları" bileşeni yüklenmeden derlenmeyecektir. görüş Geliştirici araçlarını yükleyin Ek bilgi için.
    • Başvurulan bir Windows Çalışma Zamanı Bileşeninde tanımlanan türleri tüketen Tek projeli MSIX'li bir uygulamada olası çalışma zamanı hatası: Çözümlemek için manuel olarak ekleyin etkinleştirilebilir sınıf girişleri appxmanifest.xml dosyasına.
      • C# uygulamalarında beklenen hata “COMException: Sınıf kaydedilmedi (0x80040154 (REGDB_E_CLASSNOTREG)).
      • C++/WinRT uygulamalarında beklenen hata “winrt::hresult_class_not_registered” şeklindedir.
  • Için bilinen sorunlar MSIX paketi olmayan WinUI uygulamaları (paketlenmemiş uygulamalar):
  • Için bilinen sorunlar WinUI uygulamalarını paketleme ve dağıtma:
    • The Package komutu, Single-project MSIX (Boş Uygulama, Paketlenmiş şablon) içeren WinUI uygulamalarında desteklenmez. Bunun yerine, Package & Publish MSIX paketi oluşturma komutu.
    • C# Sınıf Kitaplığından NuGet paketi oluşturmak için Pack komut, aktif olmasını sağlayın Configuration is Release.
    • The Pack komutu, bir NuGet paketi oluşturmak için C++ Windows Çalışma Zamanı Bileşenlerinde desteklenmez.

Pencereleme

Windows Uygulama SDK'sı, bir Uygulama Penceresi önceki kullanımı kolay Windows.UI.WindowManagement.AppWindow önizleme sınıfını geliştiren ve Win32, WPF ve WinForms dahil tüm Windows uygulamaları için kullanılabilir hale getiren sınıf.

Yeni Özellikler

  • Uygulama Penceresi Windows kullanıcı deneyimi ve diğer uygulamalarla iyi bir şekilde bütünleşen, kullanımı kolay pencereleme senaryolarına izin veren üst düzey bir pencereleme API'sidir. Bir uygulamanın içeriğinin sistem tarafından yönetilen bir kapsayıcısının üst düzey bir soyutlamasını temsil eder. Bu, içeriğinizin barındırıldığı kapsayıcıdır ve kullanıcıların uygulamanızı yeniden boyutlandırdıklarında ve ekranda taşıdıklarında etkileşimde bulunduğu varlığı temsil eder. Win32'ye aşina olan geliştiriciler için AppWindow, HWND'nin üst düzey bir soyutlaması olarak görülebilir.
  • Görüntüleme Alanı bir HMONITOR'un üst düzey bir soyutlamasını temsil eder, AppWindow ile aynı ilkeleri takip eder.
  • Ekran Alanı İzleyici bir geliştiricinin görüntü topolojisindeki değişiklikleri gözlemlemesine ve sistemde halihazırda tanımlanmış olan DisplayAreas'ı numaralandırmasına olanak tanır.

Giriş

Bunlar, WinUI'yi destekleyen ve geliştiricilerin daha gelişmiş giriş etkileşimleri elde etmeleri için daha düşük seviyeli bir API yüzeyi sağlayan giriş API'leridir.

Yeni Özellikler

  • İşaretçi API'leri: İşaretçiNoktasıPointerPointÖzellikler, ve PointEventArgs XAML giriş API'leri ile işaretçi olay bilgilerinin alınmasını desteklemek için.
  • InputPointerSource API'si: İşaretçi girişini bildirmek için kayıtlı bir nesneyi temsil eder ve XAML'nin SwapChainPanel API'si için işaretçi imleci ve giriş olayı işleme sağlar.
  • İmleç API'si: Geliştiricilerin imleç bit eşlemini değiştirmesine izin verir.
  • GestureRecognizer API'si: İşaretçi bilgileri verildiğinde geliştiricilerin sürükleme, tutma ve tıklama gibi belirli hareketleri tanımasına olanak tanır.

Önemli sınırlamalar

  • Türkiye İşaretçiNoktası statik fabrika işlevleri kaldırıldı: CurrentPoint'i AlGetCurrentPointDönüştürülmüşGetIntermediatePuanlar, ve GetIntermediatePointsDönüştürülmüş.
  • Windows Uygulama SDK'sı almayı desteklemiyor İşaretçiNoktası işaretçi kimlikleri olan nesneler. Bunun yerine, İşaretçiNoktası üye işlevi GetTransformedPoint var olanın dönüştürülmüş bir sürümünü almak için İşaretçiNoktası nesne. Ara noktalar için, PointEventArgs üye fonksiyonları GetIntermediatePuanlar ve GetTransformedIntermediatePuanları.
  • Platform SDK API'sinin doğrudan kullanımı Windows.UI.Core.CoreDragİşlemi WinUI uygulamalarıyla çalışmayacaktır.
  • İşaretçiNoktası özellikleri HamKonum ve İletişimRectRaw işletim sistemindeki normal değerlerle aynı olan tahmin edilmeyen değerlere atıfta bulundukları için kaldırıldı. Kullanmak Pozisyon ve İletişimRect Bunun yerine. İşaretçi tahmini artık Microsoft.UI.Input.PointerPredictor API nesnesi.

Uygulama Yaşam Döngüsü

Uygulama Yaşam Döngüsü özelliklerinin çoğu UWP platformunda zaten mevcuttur ve masaüstü uygulama türleri, özellikle paketlenmemiş Konsol uygulamaları, Win32 uygulamaları, Windows Forms uygulamaları ve WPF uygulamaları tarafından kullanılmak üzere Windows Uygulama SDK'sına getirilmiştir. UWP platformunun kendisinde eşdeğer özellikler bulunduğundan, bu özelliklerin Windows App SDK uygulaması UWP uygulamalarında kullanılamaz.

 Hatırlatma

Bir UWP uygulaması üzerinde çalışıyorsanız, bkz. UWP geçiş kılavuzu uygulamanızı Windows App SDK'ya geçirme hakkında daha fazla bilgi edinmek için.

UWP dışı uygulamalar da MSIX paketlerinde paketlenebilir. Bu uygulamalar, Windows App SDK Uygulama Yaşam Döngüsü özelliklerinden bazılarını kullanabilirken, bunun mümkün olduğu durumlarda bildirim yaklaşımını kullanmaları gerekir. Örneğin, Windows Uygulama SDK'sını kullanamazlar. XXXEtkinleştirme İçin Kaydolun API'ler ve bunun yerine bildirim aracılığıyla zengin etkinleştirme için kaydolmalıdır.

Paketlenmiş uygulamalar için tüm kısıtlamalar, paketlenmiş WinUI uygulamaları için de geçerlidir ve aşağıda açıklanan ek hususlar vardır.

Önemli hususlar:

  • Zengin aktivasyon: GetActivatedEventArgs
  • Zengin aktivasyon için Kaydolun/Kaydı Silin
    • Paketlenmemiş uygulamalar: Tamamen kullanılabilir.
    • Paketlenmiş uygulamalar: Kullanılamaz, bunun yerine uygulamanın MSIX bildirimini kullanın.
    • Daha fazla bilgi için, bkz. Zengin aktivasyon.
  • Tek/Çoklu örnekleme
    • Paketlenmemiş uygulamalar: Tamamen kullanılabilir.
    • Paketlenmiş uygulamalar: Tamamen kullanılabilir.
    • WinUI uygulamaları: Bir uygulama diğer örnekleri algılamak ve bir etkinleştirmeyi yeniden yönlendirmek istiyorsa, bunu mümkün olduğunca erken ve herhangi bir pencereyi başlatmadan vb. önce yapmalıdır. Bunu etkinleştirmek için uygulama DISABLE_XAML_GENERATED_MAIN tanımlamalı ve özel bir Ana (C#) yazmalı veya Algılama ve yeniden yönlendirmeyi yapabileceği WinMain (C++).
    • EtkinleştirmeyiAsync'e Yönlendir zaman uyumsuz bir çağrıdır ve uygulamanız bir STA'da çalışıyorsa, zaman uyumsuz bir çağrıyı beklememelisiniz. Windows Forms ve C# WinUI uygulamaları için, gerekirse Main'in zaman uyumsuz olduğunu bildirebilirsiniz. C++ WinUI ve C# WPF uygulamaları için Main öğesinin zaman uyumsuz olduğunu bildiremezsiniz, bu nedenle bunun yerine STA'yı engellemediğinizden emin olmak için yönlendirme çağrısını başka bir iş parçacığına taşımanız gerekir.
    • Daha fazla bilgi için, bkz. Uygulama örneği.
  • Güç/Durum bildirimleri
    • Paketlenmemiş uygulamalar: Tamamen kullanılabilir.
    • Paketlenmiş uygulamalar: Tamamen kullanılabilir.
    • Daha fazla bilgi için, bkz. Güç yönetimi.

Bilinen sorun:

  • Dosya Türü ilişkilendirmeleri, paketlenmemiş Win1 uygulamalarını kilitleyen Fiil işleyicisinin komut satırı şablonunu ayarlarken %251'i hatalı bir şekilde %32 olarak kodlar. Kısmi bir geçici çözüm olarak Kayıt Defteri değerini %1 olacak şekilde el ile düzenleyebilirsiniz. Hedef dosya yolunda boşluk varsa, yine de başarısız olur ve bu senaryo için bir geçici çözüm yoktur.
  • Bu Tekli/Çoklu örnekleme hataları, yaklaşmakta olan bir hizmet yamasında düzeltilecektir:
    • AppInstance yeniden yönlendirmesi, x86 için derlendiğinde çalışmıyor
    • Bir anahtarın kaydedilmesi, kaydının kaldırılması ve yeniden kaydedilmesi uygulamanın çökmesine neden oluyor

WriteCore

DWriteCore, Windows App SDK uygulamasıdır. DirectWrite, yüksek kaliteli metin işleme, çözünürlükten bağımsız anahat yazı tipleri ve tam Unicode metin ve düzen desteği için DirectX API'sidir. DWriteCore, Windows 10, sürüm 1809 (10.0; Derleme 17763)'e kadar olan Windows sürümlerinde çalışan bir DirectWrite biçimidir ve çapraz platformda kullanmanız için kapıyı açar.

Özellikler DWriteCore, birkaç istisna dışında DirectWrite'ın tüm özelliklerini içerir.

Önemli sınırlamalar

  • DWriteCore, aşağıdaki DirectWrite özelliklerini içermez:
    • Oturum başına yazı tipleri
    • Son kullanıcı tanımlı karakter (EUDC) yazı tipleri
    • Yazı tipi akışı API'leri
  • Düşük seviyeli işleme API desteği kısmidir.
  • DWriteCore, Direct2D ile birlikte çalışmaz, ancak IDWriteGlyphRunAnaliz ve IDWriteBitmapRenderTarget.

MRT Çekirdek

MRT Core, modern Windows'un modernleştirilmiş bir sürümüdür. Kaynak Yönetim Sistemi Windows App SDK'nın bir parçası olarak dağıtılır.

Önemli sınırlamalar

  • .NET projelerinde, uygulama zaten oluşturulmuşsa proje klasörüne kopyalayıp yapıştırılan kaynak dosyaları F5'te dizine eklenmez. Geçici bir çözüm olarak uygulamayı yeniden oluşturun. Görmek 1503 yayın Daha fazla bilgi için.
  • .NET projelerinde, projeye Visual Studio UI kullanılarak bir kaynak dosyası eklendiğinde, dosyalar varsayılan olarak dizine alınmayabilir. Görmek 1786 yayın daha fazla bilgi için. Bu soruna geçici bir çözüm bulmak için lütfen CSPROJ dosyasındaki aşağıdaki girişleri kaldırın:

    XML

    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • Paketlenmemiş C++ WinUI uygulamaları için kaynak URI'si doğru şekilde oluşturulmamıştır. Bu soruna geçici bir çözüm bulmak için vcxproj'a aşağıdakileri ekleyin:

    XML

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

açılma

Yeni Özellikler ve güncellemeler

  • Windows App SDK'yı otomatik olarak başlatabilirsiniz. WindowsPackageType project Windows App SDK çalışma zamanını yüklemek ve Windows App SDK API'lerini çağırmak için özellik. Görmek Bir WinUI 3 uygulaması oluşturun talimatlar için.
  • Paketlenmemiş uygulamalar, bağımsız Windows App SDK'sına entegre ederek Windows App SDK'yı dağıtabilir .exe yükleyiciyi mevcut MSI veya kurulum programınıza yükleyin. Daha fazla bilgi için bkz. Paketlenmemiş uygulamalar için Windows App SDK dağıtım kılavuzu.
  • Paketlenmemiş .NET uygulamaları, aşağıdakiler için .NET sarmalayıcıyı da kullanabilir: önyükleyici API'si çalışma zamanında Windows App SDK çerçeve paketine dinamik olarak bağımlılık almak için. .NET sarmalayıcı hakkında daha fazla bilgi için bkz. .NET sarmalayıcı kitaplığı.
  • Paketlenmiş uygulamalar, gerekli tüm paketlerin makineye yüklendiğini doğrulamak ve sağlamak için dağıtım API'sini kullanabilir. Dağıtım API'sinin nasıl çalıştığı hakkında daha fazla bilgi için bkz. paketlenmiş uygulamalar için dağıtım kılavuzu.

Önemli sınırlamalar

  • Önyükleyici API'si için .NET sarmalayıcısı, yalnızca Windows App SDK'ya erişimi basitleştirmek için paketlenmemiş .NET uygulamaları tarafından kullanılmak üzere tasarlanmıştır.
  • Yalnızca tam güvene sahip MSIX paketli uygulamalar veya paketYönetim kısıtlı yetenek, ana ve tek paket bağımlılıklarını yüklemek için dağıtım API'sini kullanma iznine sahiptir. Kısmi güvene dayalı paket uygulamalar için destek sonraki sürümlerde sunulacaktır.
  • F5, aşağıdakileri kullanan bir x86 uygulamasını test ederken DeploymentManager.Initialize Bir x64 sistemindeki yöntemi çalıştırarak x64 çerçevesinin ilk olarak kurulduğundan emin olun. WindowsAppRuntimeInstall.exe. Aksi takdirde, bir karşılaşacaksınız BULUNAMADI Visual Studio'nun normalde Mağaza dağıtımı veya yandan yükleme yoluyla oluşan x64 çerçevesini dağıtmamasından kaynaklanan hata.

Diğer sınırlamalar ve bilinen sorunlar

  • Herhangi bir CPU yapı yapılandırması için destek yok: Ne zaman Windows Uygulama SDK'sını ekleme destekleyen mevcut bir .NET uygulamasına veya bileşenine Herhangi bir CPU, istediğiniz mimariyi belirtmelisiniz: x86x64 or arm64.
  • .NET 5'ten .NET 6'ya yükseltme: Visual Studio kullanıcı arabiriminde yükseltme yaparken derleme hatalarıyla karşılaşabilirsiniz. Geçici bir çözüm olarak, proje dosyanızın TargetFrameworkPackage'ini manuel olarak aşağıdaki şekilde güncelleyin:

    XML

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • C++ UWP Araçları yüklü değilse, C# Single-project MSIX uygulaması derlenmez. Bir C# Single-project MSIX projeniz varsa, o zaman aşağıdakileri yüklemeniz gerekir: C++ (v14x) Evrensel Windows Platform Araçları isteğe bağlı bileşen.
  • Sonraki dil VSIX, Visual Studio 2019'un birden çok sürümü yüklendiğinde Visual Studio 2019'a yüklenemiyor. Yüklü birden çok Visual Studio 2019 sürümüne sahipseniz (örneğin Yayın ve Önizleme) ve ardından hem C++ için Windows App SDK VSIX'i yükleyin ve C#, ikinci kurulum başarısız olur. Çözümlemek için, birinci dil VSIX'den sonra Visual Studio 2019 için Tek projeli MSIX Paketleme Araçlarını kaldırın. görüş bu geri bildirim Bu sorun hakkında ek bilgi için.
  • Eğer istersen co_await üzerinde DispatcherQueue.TryEnqueue yöntemini kullanın, ardından özgeçmiş_önalan yardımcı işlevi Windows Uygulama Kitaplığı (WIL):
    1. referans ekle Microsoft.Windows.ImplementationLibrary NuGet paketi.
    2. Eklemek #include <wil/cppwinrt_helpers.h> kod dosyanıza ifade.
    3. kullanım wil::resume_foreground(your_dispatcher); için co_await sonuç.

Daha fazlasını okuyun ve Microsoft'ta indirme bağlantılarını bulun okuyun.

Konular hakkında daha fazla bilgi: Windows Uygulama SDK'sı 1.0.0, Winui 3