Microsoft Windows App SDK 1.0 đã phát hành ổn định, có sẵn để tải xuống (Ghi chú phát hành)

Biểu tượng thời gian đọc 12 phút đọc


Bạn đọc giúp đỡ ủng hộ MSpoweruser. Chúng tôi có thể nhận được hoa hồng nếu bạn mua thông qua các liên kết của chúng tôi. Biểu tượng chú giải công cụ

Đọc trang tiết lộ của chúng tôi để tìm hiểu cách bạn có thể giúp MSPoweruser duy trì nhóm biên tập Tìm hiểu thêm

chiến thắng

Sau một số bản Preview, Microsoft vừa phát hành Windows App SDK 1.0.0 Stable, một bộ công cụ cho phép các nhà phát triển ứng dụng dành cho máy tính để bàn xây dựng ứng dụng với giao diện người dùng Windows, API và các tính năng nền tảng hiện đại.

Trong bản phát hành này, Microsoft đã thêm nhiều tính năng mới từ Windows App SDK 0.8 và ổn định các vấn đề từ các bản phát hành Xem trước 1.0.

[lwptoc title = ”WindowsAppSDK 1.0 Ổn định” width = ”30%” float = ”right”]

WindowsUI 3

WinUI 3 là khung trải nghiệm người dùng (UX) gốc cho Windows App SDK.

Các tính năng và bản cập nhật mới:

  • Microsoft đã thêm các điều khiển mới (PipsPager, Expander, BreadcrumbBar) và cập nhật các điều khiển hiện có để phản ánh các kiểu Windows mới nhất từ WindowsUI 2.6.
  • Đóng gói MSIX một dự án được hỗ trợ trong WinUI bằng cách tạo một ứng dụng mới bằng cách sử dụng mẫu “Ứng dụng trống, được đóng gói…”.
  • Microsoft hiện hỗ trợ triển khai các ứng dụng WinUI 3 mà không cần đóng gói MSIX trên Windows phiên bản 1809 trở lên. Xin vui lòng xem Tạo một ứng dụng máy tính để bàn không đóng gói WinUI 3 để biết thêm thông tin.
  • Các dự án WinUI 3 hiện có thể đặt phiên bản mục tiêu của chúng xuống Windows 10, phiên bản 1809. Trước đây, chúng chỉ có thể được đặt ở mức thấp nhất là phiên bản 1903.
  • Thanh công cụ trong ứng dụng, Tải lại nóng và Cây trực quan cho các ứng dụng đóng gói WinUI được hỗ trợ trong Visual Studio 2022 Preview 5 và GA.

Những hạn chế quan trọng:

  • Các vấn đề đã biết về cả ứng dụng WinUI đóng gói và không đóng gói:
    • Lỗi thời gian chạy trong các ứng dụng C ++ tham chiếu đến Cấu phần thời gian chạy C ++ của Windows: Để giải quyết, hãy thêm mục tiêu dưới đây vào cuối .vcxproj của Thành phần thời gian chạy Windows:

      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>
      
  • Các vấn đề đã biết về Các ứng dụng WinUI với MSIX một dự án (Ứng dụng trống, Mẫu đóng gói):
    • Thiếu mục menu Gói & Xuất bản cho đến khi bạn khởi động lại Visual Studio: Khi tạo ứng dụng mới với Single-project MSIX trong cả Visual Studio 2019 và Visual Studio 2022 bằng cách sử dụng mẫu dự án Blank App, Packaged (WinUI 3 in Desktop), lệnh xuất bản dự án sẽ không xuất hiện trong menu cho đến khi bạn đóng và mở lại Visual Studio.
    • Ứng dụng AC # với MSIX một dự án sẽ không biên dịch nếu không cài đặt thành phần tùy chọn “C ++ (v14x) Universal Windows Platform Tools”. Quang cảnh Cài đặt các công cụ dành cho nhà phát triển để biết thêm thông tin.
    • Lỗi thời gian chạy tiềm ẩn trong ứng dụng có MSIX dự án đơn sử dụng các loại được xác định trong Cấu phần thời gian chạy Windows được tham chiếu: Để giải quyết, hãy thêm theo cách thủ công các mục nhập lớp có thể kích hoạt vào appxmanifest.xml.
      • Lỗi mong đợi trong các ứng dụng C # là “COMException: Class chưa được đăng ký (0x80040154 (REGDB_E_CLASSNOTREG)).
      • Lỗi mong đợi trong các ứng dụng C ++ / WinRT là “winrt :: hresult_class_not_registered”.
  • Các vấn đề đã biết về Các ứng dụng WinUI không có MSIX-đóng gói (ứng dụng chưa đóng gói):
  • Các vấn đề đã biết về đóng gói và triển khai các ứng dụng WinUI:
    • Sản phẩm Package lệnh không được hỗ trợ trong các ứng dụng WinUI với MSIX một dự án (Ứng dụng trống, Mẫu đóng gói). Thay vào đó, hãy sử dụng Package & Publish lệnh để tạo một gói MSIX.
    • Để tạo một gói NuGet từ Thư viện Lớp C # với Pack lệnh, đảm bảo hoạt động Configuration is Release.
    • Sản phẩm Pack lệnh không được hỗ trợ trong C ++ Windows Runtime Components để tạo gói NuGet.

Chèo gió

SDK ứng dụng Windows cung cấp một cửa sổ ứng dụng lớp phát triển lớp xem trước Windows.UI.WindowManagement.AppWindow dễ sử dụng trước đó và cung cấp nó cho tất cả các ứng dụng Windows, bao gồm Win32, WPF và WinForms.

Các tính năng mới

  • cửa sổ ứng dụng là một API cửa sổ cấp cao cho phép các trường hợp cửa sổ dễ sử dụng, tích hợp tốt với trải nghiệm người dùng Windows và với các ứng dụng khác. Thể hiện phần tóm tắt cấp cao của vùng chứa nội dung của ứng dụng do hệ thống quản lý. Đây là vùng chứa mà nội dung của bạn được lưu trữ và đại diện cho thực thể mà người dùng tương tác khi họ thay đổi kích thước và di chuyển ứng dụng của bạn trên màn hình. Đối với các nhà phát triển quen thuộc với Win32, AppWindow có thể được coi là một bản tóm tắt cấp cao của HWND.
  • Khu vực trưng bày đại diện cho sự trừu tượng cấp cao của HMONITOR, tuân theo các nguyên tắc tương tự như AppWindow.
  • Trình theo dõi khu vực hiển thị cho phép nhà phát triển quan sát các thay đổi trong cấu trúc liên kết hiển thị và liệt kê các DisplayAreas hiện được xác định trong hệ thống.

Đầu vào

Đây là các API đầu vào hỗ trợ WinUI và cung cấp bề mặt API cấp thấp hơn cho các nhà phát triển để đạt được các tương tác đầu vào nâng cao hơn.

Các tính năng mới

  • API con trỏ: Con trỏĐiểmCon TrỏPointPropertiesvà PointEventArgs để hỗ trợ truy xuất thông tin sự kiện con trỏ với các API đầu vào XAML.
  • API InputPointerSource: Đại diện cho một đối tượng được đăng ký để báo cáo đầu vào con trỏ, đồng thời cung cấp con trỏ con trỏ và xử lý sự kiện đầu vào cho API SwapChainPanel của XAML.
  • API con trỏ: Cho phép các nhà phát triển thay đổi bitmap của con trỏ.
  • API GestureRecognizer: Cho phép các nhà phát triển nhận ra các cử chỉ nhất định như kéo, giữ và nhấp khi có thông tin con trỏ.

Những hạn chế quan trọng

  • Tất cả Con trỏĐiểm chức năng nhà máy tĩnh đã bị loại bỏ: Nhận điểm hiện tạiGetCurrentPointChuyển đổiGetInter InstantPointsvà GetInter InstantPointsTransformed.
  • SDK ứng dụng Windows không hỗ trợ truy xuất Con trỏĐiểm các đối tượng có ID con trỏ. Thay vào đó, bạn có thể sử dụng Con trỏĐiểm chức năng thành viên GetTransformingPoint để lấy một phiên bản đã biến đổi của một Con trỏĐiểm sự vật. Đối với các điểm trung gian, bạn có thể sử dụng PointEventArgs chức năng thành viên GetInter InstantPoints và GetTransformedInter InstantPoints.
  • Sử dụng trực tiếp API SDK nền tảng Windows.UI.Core.CoreDragOperation sẽ không hoạt động với các ứng dụng WinUI.
  • Con trỏĐiểm tài sản Vị trí thô và Liên HệRectRaw đã bị xóa vì chúng tham chiếu đến các giá trị không được dự đoán, giống với các giá trị bình thường trong Hệ điều hành. Sử dụng Chức vụ và Liên hệ Rect thay thế. Dự đoán con trỏ hiện được xử lý với Microsoft.UI.Input.PulumPredictor Đối tượng API.

Vòng đời ứng dụng

Hầu hết các tính năng Vòng đời ứng dụng đã tồn tại trong nền tảng UWP và đã được đưa vào Windows App SDK để sử dụng cho các loại ứng dụng dành cho máy tính để bàn, đặc biệt là ứng dụng Console không đóng gói, ứng dụng Win32, ứng dụng Windows Forms và ứng dụng WPF. Không thể sử dụng Windows App SDK triển khai các tính năng này trong các ứng dụng UWP, vì bản thân nền tảng UWP cũng có các tính năng tương đương.

 Quan trọng

Nếu bạn đang làm việc trên một ứng dụng UWP, hãy tham khảo hướng dẫn di chuyển UWP để tìm hiểu thêm về cách di chuyển ứng dụng của bạn sang Windows App SDK.

Các ứng dụng không phải UWP cũng có thể được đóng gói thành các gói MSIX. Mặc dù các ứng dụng này có thể sử dụng một số tính năng Vòng đời ứng dụng Windows App SDK, nhưng chúng phải sử dụng phương pháp tệp kê khai nếu tính năng này khả dụng. Ví dụ: họ không thể sử dụng Windows App SDK Đăng kýForXXXKích hoạt API và thay vào đó phải đăng ký kích hoạt phong phú thông qua tệp kê khai.

Tất cả các ràng buộc đối với các ứng dụng đóng gói cũng áp dụng cho các ứng dụng WinUI, được đóng gói và có những cân nhắc bổ sung như được mô tả bên dưới.

Những cân nhắc quan trọng:

  • Kích hoạt phong phú: GetActiisedEventArgs
    • Ứng dụng chưa đóng gói: Hoàn toàn có thể sử dụng được.
    • Ứng dụng đóng gói: Có thể sử dụng, nhưng những ứng dụng này cũng có thể sử dụng nền tảng GetActivatedEventArgs. Lưu ý rằng nền tảng xác định Windows.ApplicationModel.AppInstance trong khi SDK ứng dụng Windows xác định Microsoft.Windows.AppLifecycle.AppInstance. Và trong khi các ứng dụng UWP có thể sử dụng ActivatedEventArgs các lớp học, chẳng hạn như FileActivatedEventArgs và LaunchActivatedEventArgs, các ứng dụng sử dụng tính năng Windows App SDK AppLifecycle phải sử dụng các giao diện không phải các lớp (ví dụ: IFileActivatedEventArgsILaunchActivatedEventArgs, và như thế).
    • Ứng dụng WinUi: WinUI's App.OnLaunched được cung cấp Microsoft.UI.Xaml.LaunchActiisedEventArgs, trong khi nền tảng GetActivatedEventArgs trả về một Windows.ApplicationModel.IActiisedEventArgsvà WindowsAppSDK GetActivatedEventArgs trả về một Microsoft.Windows.AppLifecycle.AppActivationArguments đối tượng có thể đại diện cho một nền tảng LaunchActivatedEventArgs.
    • Để biết thêm thông tin, hãy xem Kích hoạt phong phú.
  • Đăng ký / Hủy đăng ký để kích hoạt phong phú
    • Ứng dụng chưa đóng gói: Hoàn toàn có thể sử dụng được.
    • Ứng dụng đóng gói: Không thể sử dụng được, hãy sử dụng tệp kê khai MSIX của ứng dụng để thay thế.
    • Để biết thêm thông tin, hãy xem Kích hoạt phong phú.
  • Một lần / Đa phiên bản
    • Ứng dụng chưa đóng gói: Hoàn toàn có thể sử dụng được.
    • Ứng dụng đóng gói: Hoàn toàn có thể sử dụng được.
    • Ứng dụng WinUI: Nếu một ứng dụng muốn phát hiện các trường hợp khác và chuyển hướng kích hoạt, thì ứng dụng đó phải làm như vậy càng sớm càng tốt và trước khi khởi chạy bất kỳ cửa sổ nào, v.v. Để bật tính năng này, ứng dụng phải xác định DISABLE_XAML_GENERATED_MAIN và viết một Main (C #) tùy chỉnh hoặc WinMain (C ++) nơi nó có thể phát hiện và chuyển hướng.
    • Chuyển hướngKích hoạtToAsync là cuộc gọi không đồng bộ và bạn không nên đợi cuộc gọi không đồng bộ nếu ứng dụng của bạn đang chạy trong STA. Đối với các ứng dụng Windows Forms và C # WinUI, bạn có thể khai báo Main là không đồng bộ, nếu cần. Đối với các ứng dụng C ++ WinUI và C # WPF, bạn không thể khai báo Main là không đồng bộ, vì vậy thay vào đó bạn cần chuyển lệnh gọi chuyển hướng sang một luồng khác để đảm bảo bạn không chặn STA.
    • Để biết thêm thông tin, hãy xem Cài đặt ứng dụng.
  • Thông báo nguồn / trạng thái
    • Ứng dụng chưa đóng gói: Hoàn toàn có thể sử dụng được.
    • Ứng dụng đóng gói: Hoàn toàn có thể sử dụng được.
    • Để biết thêm thông tin, hãy xem Quản lý năng lượng.

Vấn đề được biết:

  • Các liên kết Loại tệp mã hóa không chính xác% 1 thành% 251 khi đặt mẫu dòng lệnh của trình xử lý Động từ, điều này làm hỏng các ứng dụng Win32 chưa được đóng gói. Thay vào đó, bạn có thể chỉnh sửa thủ công giá trị Sổ đăng ký thành% 1 như một giải pháp thay thế một phần. Nếu đường dẫn tệp đích có một khoảng trống trong đó, thì nó vẫn sẽ không thành công và không có cách giải quyết nào cho tình huống đó.
  • Các lỗi này sẽ được khắc phục trong một bản vá bảo dưỡng sắp tới:
    • Chuyển hướng AppInstance không hoạt động khi được biên dịch cho x86
    • Việc đăng ký khóa, hủy đăng ký và đăng ký lại sẽ khiến ứng dụng gặp sự cố

WriteCore

DWriteCore là triển khai Windows App SDK của Viết trực tiếp, là API DirectX để kết xuất văn bản chất lượng cao, phông chữ phác thảo độc lập với độ phân giải và hỗ trợ bố cục và văn bản Unicode đầy đủ. DWriteCore là một dạng DirectWrite chạy trên các phiên bản Windows cho đến Windows 10, phiên bản 1809 (10.0; Build 17763) và mở ra cánh cửa để bạn sử dụng nó trên nhiều nền tảng.

Tính năng DWriteCore chứa tất cả các tính năng của DirectWrite, với một vài ngoại lệ.

Những hạn chế quan trọng

  • DWriteCore không chứa các tính năng DirectWrite sau:
    • Phông chữ mỗi phiên
    • Phông chữ ký tự do người dùng cuối xác định (EUDC)
    • API phát trực tuyến phông chữ
  • Hỗ trợ API kết xuất cấp thấp là một phần.
  • DWriteCore không tương thích với Direct2D, nhưng bạn có thể sử dụng Phân tích IDWriteGlyphRun và IDWriteBitmapRenderTarget.

lõi tàu điện ngầm

MRT Core là phiên bản sắp xếp hợp lý của Windows hiện đại Hệ thống quản lý tài nguyên được phân phối như một phần của Windows App SDK.

Những hạn chế quan trọng

  • Trong các dự án .NET, các tệp tài nguyên được sao chép vào thư mục dự án sẽ không được lập chỉ mục trên F5 nếu ứng dụng đã được tạo. Để giải quyết vấn đề, hãy xây dựng lại ứng dụng. Nhìn thấy vấn đề 1503 để biết thêm chi tiết.
  • Trong các dự án .NET, khi tệp tài nguyên được thêm vào dự án bằng giao diện người dùng Visual Studio, tệp có thể không được lập chỉ mục theo mặc định. Nhìn thấy vấn đề 1786 để biết thêm thông tin. Để khắc phục sự cố này, vui lòng xóa các mục bên dưới trong tệp CSPROJ:

    XML

    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • Đối với các ứng dụng WinUI C ++ không được đóng gói, URI tài nguyên không được xây dựng đúng cách. Để khắc phục sự cố này, hãy thêm phần sau vào vcxproj:

    XML

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

Triển khai

Các tính năng và bản cập nhật mới

  • Bạn có thể tự động khởi chạy Windows App SDK thông qua WindowsPackageType project thuộc tính để tải thời gian chạy Windows App SDK và gọi các API Windows App SDK. Nhìn thấy Tạo ứng dụng WinUI 3 để được hướng dẫn.
  • Các ứng dụng chưa được đóng gói có thể triển khai Windows App SDK bằng cách tích hợp trong Windows App SDK độc lập .exe trình cài đặt vào MSI hiện có hoặc chương trình thiết lập của bạn. Để biết thêm thông tin, hãy xem Hướng dẫn triển khai Windows App SDK cho các ứng dụng chưa được đóng gói.
  • Các ứng dụng .NET chưa được đóng gói cũng có thể sử dụng trình bao bọc .NET cho API bootstrapper để tự động thực hiện một phần phụ thuộc vào gói khung Windows App SDK tại thời điểm chạy. Để biết thêm thông tin về trình bao bọc .NET, hãy xem Thư viện trình bao bọc .NET.
  • Các ứng dụng được đóng gói có thể sử dụng API triển khai để xác minh và đảm bảo rằng tất cả các gói bắt buộc đã được cài đặt trên máy. Để biết thêm thông tin về cách hoạt động của API triển khai, hãy xem hướng dẫn triển khai cho các ứng dụng đóng gói.

Những hạn chế quan trọng

  • Trình bao bọc .NET cho API bootstrapper chỉ nhằm mục đích sử dụng cho các ứng dụng .NET chưa được đóng gói để đơn giản hóa quyền truy cập vào Windows App SDK.
  • Chỉ các ứng dụng được đóng gói MSIX hoàn toàn tin cậy hoặc có quản lý gói khả năng bị hạn chế có quyền sử dụng API triển khai để cài đặt các gói phụ thuộc chính và gói singleton. Hỗ trợ cho các ứng dụng đóng gói tin cậy một phần sẽ có trong các bản phát hành sau.
  • Khi F5 thử nghiệm một ứng dụng x86 sử dụng DeploymentManager.Initialize trên hệ thống x64, hãy đảm bảo rằng khung x64 được cài đặt trước bằng cách chạy WindowsAppRuntimeInstall.exe. Nếu không, bạn sẽ gặp phải KHÔNG TÌM THẤY lỗi do Visual Studio không triển khai khuôn khổ x64, thường xảy ra thông qua triển khai Store hoặc chuyển tải.

Các hạn chế khác và các vấn đề đã biết

  • Không hỗ trợ cho bất kỳ cấu hình xây dựng CPU nào: Khi nào thêm SDK ứng dụng Windows ứng dụng .NET hiện có hoặc thành phần hỗ trợ Bất kỳ CPU nào, bạn phải chỉ định kiến ​​trúc mong muốn: x86x64 or arm64.
  • Nâng cấp từ .NET 5 lên .NET 6: Khi nâng cấp trong Giao diện người dùng Visual Studio, bạn có thể gặp phải lỗi bản dựng. Để giải quyết vấn đề, hãy cập nhật thủ công TargetFrameworkPackage trong tệp dự án của bạn thành bên dưới:

    XML

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • Ứng dụng C # Single-project MSIX không biên dịch nếu Công cụ C ++ UWP không được cài đặt. Nếu bạn có một dự án MSIX một dự án C #, thì bạn sẽ cần cài đặt C ++ (v14x) Công cụ nền tảng Windows phổ biến thành phần tùy chọn.
  • Không thể cài đặt ngôn ngữ tiếp theo VSIX vào Visual Studio 2019 khi nhiều phiên bản Visual Studio 2019 được cài đặt. Nếu bạn đã cài đặt nhiều phiên bản Visual Studio 2019 (ví dụ: Phát hành và Xem trước), sau đó cài đặt Windows App SDK VSIX cho cả C ++  C #, cài đặt thứ hai sẽ không thành công. Để giải quyết, hãy gỡ cài đặt Công cụ đóng gói MSIX một dự án cho Visual Studio 2019 sau ngôn ngữ đầu tiên VSIX. Quang cảnh phản hồi này để biết thêm thông tin về vấn đề này.
  • Nếu bạn là co_await trên DispatcherQueue.TryEnqueue , sau đó sử dụng sơ yếu lý lịch_foreground chức năng trợ giúp trong Thư viện triển khai Windows (WIL):
    1. Thêm tham chiếu đến Microsoft.Windows.ImplementationLibrary Gói NuGet.
    2. Thêm #include <wil/cppwinrt_helpers.h> tuyên bố cho tệp mã của bạn.
    3. Sử dụng wil::resume_foreground(your_dispatcher); đến co_await kết quả.

Đọc thêm và tìm các liên kết tải xuống tại Microsoft tại đây.

Thông tin thêm về các chủ đề: SDK ứng dụng Windows 1.0.0, chiến thắng 3

Bình luận

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *