Rider 無法執行 WinUI 3 專案 Microsoft.ui.xaml.dll 找不到指定的模組 解決方式

筆者目前使用的 JetBrains Rider 編輯器是 2023/06/23 才更新的 Rider 2023.1.3 版本,目前還沒有辦法透過直接介面建立 WinUI 3 專案,所以筆者是透過 Visual Studio 建立 WinUI 3 專案,然後再使用 Rider 編輯器開啟專案開發,但是目前在 Rider 上執行時會失敗,出現錯誤訊息如下:
    
System.DllNotFoundException: Unable to load DLL 'Microsoft.ui.xaml.dll' or one of its dependencies: 找不到指定的模組。 (0x8007007E)
   at WinUiAppNotificationTest.Program.XamlCheckProcessRequirements()
   at WinUiAppNotificationTest.Program.Main(String[] args) in C:\Users\ruyut\Documents\RiderProjects\2023\test\WinUiAppNotificationTest\WinUiAppNotificationTest\obj\x64\Debug\net6.0-windows10.0.19041.0\win10-x64\App.g.i.cs:line 28
    

無論在 Visual Studio 上有沒有執行過,Rider 都會出現這個錯誤,而 Visual Studio 執行起來則是非常正常的。
預設安裝的套件 Microsoft.WindowsAppSDK 和 Microsoft.Windows.SDK.BuildTools 也已經升級到最新的 1.3.230602002 和 10.0.22621.756 ,也是會出現一樣的問題。
後來爬文之後發現在 .csproj 內的 PropertyGroup 加入 <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> 可以暫時解決問題。
    
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RootNamespace>WinUiAppNotificationTest</RootNamespace>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <Platforms>x86;x64;ARM64</Platforms>
    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <PublishProfile>win10-$(Platform).pubxml</PublishProfile>
    <UseWinUI>true</UseWinUI>
    <EnableMsixTooling>true</EnableMsixTooling>
    <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="Assets\SplashScreen.scale-200.png" />
    <Content Include="Assets\LockScreenLogo.scale-200.png" />
    <Content Include="Assets\Square150x150Logo.scale-200.png" />
    <Content Include="Assets\Square44x44Logo.scale-200.png" />
    <Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
    <Content Include="Assets\StoreLogo.png" />
    <Content Include="Assets\Wide310x150Logo.scale-200.png" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.3.230602002" />
    <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.756" />
    <Manifest Include="$(ApplicationManifest)" />
  </ItemGroup>

</Project>
    

只是目前在 Rider 上執行 WinUI 3 專案和 Visual Studio 相比還是少了上方的除錯工具:

但是從以前 Java 使用 JetBrains 家族的開發工具已經習慣了,使用其他的編輯器寫程式就很不習慣,還好筆者以前在寫 WinForms 專案時都習慣動態產生控制項目,完全沒有使用拖拉,目前應該就只有真的需要時才會開啟 Visual Studio ,希望 Rider 多多加油,不然長久以來 Rider 都更新的有點緩慢,非常可惜。

參考資料:
Github Issues - .NET 6 and WINUI3 fails to start Unable to load DLL 'Microsoft.ui.xaml.dll' #1762

留言