在建立 WinUI 3 專案時並不能選擇 .NET 版本,建立完成後會發現版本就是 .NET 6 ,那要如何更新到 .NET 8 呢?
一執行就會發現錯誤:
目前遇到的問題應該是微軟不小心忽略,等待日後修正應該就不會再有這個問題了
參考資料:
GitHub - microsoft/microsoft-ui-xaml - Issuses - [.NET 8 RC1] WinUI 3 App(C# Unpackaged) fails to run. #8801
更新套件
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
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com