WinUI 3 更新到 .NET 8 步驟

在建立 WinUI 3 專案時並不能選擇 .NET 版本,建立完成後會發現版本就是 .NET 6 ,那要如何更新到 .NET 8 呢?

更新套件

WinUI 3 預設就已經安裝兩個 NuGet 套件,分別是 Microsoft.WindowsAppSDK 和 Microsoft.Windows.SDK.BuildTools ,先將這兩個更新到最新版本,目前的最新版本如下:
    
Microsoft.Windows.SDK.BuildTools	-> 10.0.22621.2428
Microsoft.WindowsAppSDK				-> 1.4.231115000
    


設定 .NET 版本

在「方案總管」中對專案上點選滑鼠右鍵 > 屬性,將「目標 Framework」設定為 .NET 8.0

一執行就會發現錯誤:

    
嚴重性	程式碼	說明	專案	檔案	行	隱藏項目狀態	詳細資料
錯誤	NETSDK1083	無法辨識指定的 RuntimeIdentifier 'win10-x86'。如需詳細資訊,請參閱 https://aka.ms/netsdk1083。	
錯誤	NETSDK1083	無法辨識指定的 RuntimeIdentifier 'win10-x64'。如需詳細資訊,請參閱 https://aka.ms/netsdk1083。		
錯誤	NETSDK1083	無法辨識指定的 RuntimeIdentifier 'win10-arm64'。如需詳細資訊,請參閱 https://aka.ms/netsdk1083。	
    

解決方式一

在專案的 .csproj 檔案中加入以下這行就可以正常執行了:
    
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <PublishProfile>win10-$(Platform).pubxml</PublishProfile>
    <UseRidGraph>true</UseRidGraph>
  </PropertyGroup>
</Project>
    

解決方式二

一樣是在專案的 .csproj 檔案中, 也有網友發現只要將四個「win10-」替換為「win-」,就可以執行了
    
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <PublishProfile>win10-$(Platform).pubxml</PublishProfile>
  </PropertyGroup>
</Project>
    

    
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
    <RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
    <PublishProfile>win-$(Platform).pubxml</PublishProfile>
  </PropertyGroup>
</Project>
    

目前遇到的問題應該是微軟不小心忽略,等待日後修正應該就不會再有這個問題了

參考資料:
GitHub - microsoft/microsoft-ui-xaml - Issuses - [.NET 8 RC1] WinUI 3 App(C# Unpackaged) fails to run. #8801

留言