Ошибка компилятора Windows SDK в приложении MAUI: WMC0621 Невозможно разрешить «GenXbf.dll» по пути

Мне всегда удавалось создать этот проект, основанный на MAUI, однако сегодня он начал давать сбой с этой ошибкой при попытке скомпилировать его в Visual Studio для Windows:

Ошибка WMC0621 Невозможно разрешить файл GenXbf.dll по пути C:\Users\knocte\Documents\Code\RIM\packages\microsoft.windowsappsdk\1.2.221209.1\buildTransitive..\tools\net472..\x64\genxbf.dll'. Убедитесь, что Nuget был правильно восстановлен и что путь доступен на диске. Интерфейс C:\Users\knocte\Documents\Code\RIM\packages\microsoft.windowsappsdk\1.2.221209.1\tools\x64\genxbf.dll 1

В моем файле проекта есть этот фрагмент, который, похоже, очень связан с этим:

      
        <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041</TargetFrameworks>
...
        <SupportedOSPlatformVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.17763.0</SupportedOSPlatformVersion>
        <TargetPlatformMinVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.17763.0</TargetPlatformMinVersion>
    </PropertyGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
        <!-- Required? - WinUI does not yet have buildTransitive for everything -->
        <PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.5.1" />
        <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.2.221209.1" />
    </ItemGroup>

1 ответ

Эта ошибка выглядит как регресс этой проблемы с GitHub.

Поскольку там упоминается, что обновление должно помочь (хотя они отображают номера версий, которые старше тех, что были у меня), я изменил свой .csproj следующим образом:

      diff --git a/src/Frontend/Frontend.csproj b/src/Frontend/Frontend.csproj
index 0ace6b0..2144300 100644
--- a/src/Frontend/Frontend.csproj
+++ b/src/Frontend/Frontend.csproj
@@ -23,8 +23,8 @@
        <SupportedOSPlatformVersion Condition="'$(TargetFramework)' == 'net7.0-ios'">14.2</SupportedOSPlatformVersion>
        <SupportedOSPlatformVersion Condition="'$(TargetFramework)' == 'net7.0-maccatalyst'">14.0</SupportedOSPlatformVersion>
        <SupportedOSPlatformVersion Condition="'$(TargetFramework)' == 'net7.0-android'">23.0</SupportedOSPlatformVersion>
-       <SupportedOSPlatformVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.17763.0</SupportedOSPlatformVersion>
-       <TargetPlatformMinVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.17763.0</TargetPlatformMinVersion>
+       <SupportedOSPlatformVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.19041.0</SupportedOSPlatformVersion>
+       <TargetPlatformMinVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.19041.0</TargetPlatformMinVersion>
    </PropertyGroup>
 
    <ItemGroup>
@@ -38,7 +38,7 @@
    <ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
        <!-- Required? - WinUI does not yet have buildTransitive for everything -->
        <PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.5.1" />
-       <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.2.221209.1" />
+       <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.3.230602002" />
    </ItemGroup>

И это на удивление сработало.

Кстати, в начале файла .csproj было следующее:

      <Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>
        <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041</TargetFrameworks>

Другие вопросы по тегам