相关文章推荐
有情有义的日光灯  ·  angular - error ...·  1 年前    · 
豪爽的啄木鸟  ·  sparksql ...·  1 年前    · 
大力的红酒  ·  Spring框架@PostConstruct ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I am getting an exception in my WinUI3 app that Microsoft.ui.xaml.dll is unable to load. I have included Microsoft.UI.Xaml and Microsoft.Graphics.Win2D in nuget.

System.DllNotFoundException
  HResult=0x80131524
  Message=Unable to load DLL 'Microsoft.ui.xaml.dll' or one of its dependencies: The specified module could not be found. (0x8007007E)
  Source=TibraUI
  StackTrace:
   at TibraUI.Program.XamlCheckProcessRequirements()
   at TibraUI.Program.Main(String[] args) in C:\Users\Bryan\src\tibra\Tibra\TibraUI\obj\x64\Debug\net6.0-windows10.0.19041.0\win10-x64\App.g.i.cs:line 28

Windows Version 21H1 Build 19043.1348

My App.xaml

<Application
    x:Class="TibraUI.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:TibraUI">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
                <!-- Other merged dictionaries here -->
            </ResourceDictionary.MergedDictionaries>
            <!-- Other app resources here -->
        </ResourceDictionary>
    </Application.Resources>
</Application>
                FWIW I am seeing the same error and the link provided by Hans refers to a now closed thread that does not offer a solution - the suggested install of the VC redist does not work for me.
– Rno
                Nov 25, 2021 at 23:19
                A solution that seemed to work for me was to select the template with two projects, i.e. the one with the separate packager project (WAP). As long as you have the packager project selected as startup project, it seems to work. Setting the 'real' project as startup results in the same error. Mind you you have to set your machine to developer mode.
– Rno
                Nov 25, 2021 at 23:36
                @BAR sorry to hear that. I am completely new to this so have very little to offer you. I created a new working boilerplate WinUI3 project and put in on GitHub, perhaps browsing that code or cloning it may give you some insights. github.com/arnovb-github/EmptyWinUI
– Rno
                Nov 27, 2021 at 23:20

Run the package as the startup project. It's not intuitive, but the main project is not meant to run.

This answer only applies to those who created a project that included a package project.

Are you sure, maybe there is another entry in your solution "{project name} (Package)"? If yes, try to start this one. – Patric Jan 27, 2022 at 15:02 Yep that was it. Just set the package project as the startup project and hit run. You will see in the progress bar of vs it "deploy", – Guy Lowe Feb 24, 2022 at 1:30

In the app project file, inside the main PropertyGroup, add <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> as shown below.

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RootNamespace>EPicker</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>

I was able to solve the issue in the following way:

I created a Uno WinUI 3 .NET 6 project using dotnet new unoapp-winui-net6 from the command prompt. I had to update the Windows.Desktop.csproj reference from:

<ItemGroup> 
    <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" RuntimeFrameworkVersion="10.0.18362.16" /> 
    <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.18362.16" /> 
</ItemGroup> 
<ItemGroup>
    <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" RuntimeFrameworkVersion="10.0.19041.22" />
    <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.19041.22" />
</ItemGroup>

and in the Windows.Package.wapproj, I updated

<ItemGroup>
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="[1.0.0-experimental1]">
        <IncludeAssets>build</IncludeAssets>
    </PackageReference>
</ItemGroup>
<ItemGroup>
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="[1.0.0]">
        <IncludeAssets>build</IncludeAssets>
    </PackageReference>
</ItemGroup>

(see also https://github.com/unoplatform/uno/discussions/7617)

In the Configuration Manager in Visual Studio 2022 Preview 1.1, I then had to change the platform for Windows.Desktop to x64 (was x86). Windows.package should also be x64.

I set the Windows.Package project as the startup project. I could build and start the application without the error.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.