Ошибка компилятора 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>