Řešení známých problémů

Tento článek popisuje některé známé problémy s uživatelským rozhraním multiplatformních aplikací .NET (.NET MAUI) a způsob jejich řešení nebo řešení. Úložiště .NET MAUI také podrobně popisuje některé známé problémy.

Nejde najít úlohy .NET MAUI

Existují dvě možnosti instalace úloh .NET MAUI:

  1. Visual Studio ve Windows může nainstalovat soubory .msi pro každou sadu funkcí.
  2. dotnet workload install Příkazy.

Pokud ve Windows spustíte dotnet workload install po instalaci rozhraní .NET MAUI prostřednictvím instalačního programu sady Visual Studio, může Visual Studio zadat stav, ve kterém nemůže najít úlohy .NET MAUI. Zobrazí se chyby sestavení s oznámením o instalaci úloh .NET MAUI a je možné zadat stav, kdy se úlohy nedají opravit nebo přeinstalovat. Další informace najdete v tématu o problému GitHubu s dotnet/sdk#22388.

Windows

Řešením tohoto problému ve Windows je odinstalace úloh .NET MAUI prostřednictvím rozhraní příkazového řádku, odinstalace všech sad SDK .NET v Ovládací panely a odinstalace úloh .NET MAUI v sadě Visual Studio. Tyto odinstalace je možné provést následujícím postupem:

  1. Spusťte dotnet workload uninstall maui příkazy, pokud jste někdy použili dotnet workload install příkazy.
  2. Odinstalujte všechny samostatné instalační programy sady .NET SDK z Ovládací panely. Tyto instalační programy mají názvy podobné Microsoft .NET SDK 6.0.300.
  3. V každé instanci sady Visual Studio odinstalujte úlohy sady Visual Studio pro vývoj uživatelského rozhraní pro více platforem .NET a vývoj desktopových aplikací .NET.

Potom spuštěním následujícího příkazu zkontrolujte, jestli nejsou k dispozici další .msi soubory, které je potřeba odinstalovat:

reg query HKLM\SOFTWARE\Microsoft\Windows\currentversion\uninstall\ -s -f manifest

Tento reg query příkaz zobrazí seznam sad SDK .NET 6 a novějších, které jsou stále nainstalované na vašem počítači, například:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\uninstall\{EEC1BB5F-3391-43C2-810E-42D78ADF3140}
    InstallSource    REG_SZ    C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.MacCatalyst.Manifest-6.0.300,version=125.179.40883,chip=x64,productarch=neutral\
    DisplayName    REG_SZ    Microsoft.NET.Sdk.MacCatalyst.Manifest-6.0.300

Pokud obdržíte podobný výstup, měli byste zkopírovat identifikátor GUID pro každý balíček a odinstalovat balíček pomocí msiexec příkazu:

msiexec /x {EEC1BB5F-3391-43C2-810E-42D78ADF3140} /q IGNOREDEPENDENCIES=ALL

Pak byste měli příkaz dál spouštět reg query , dokud nevrátí žádné výsledky. Jakmile nebudou k dispozici žádné další výsledky a všechny sady .NET 6+ SDK se odinstalují, měli byste také zvážit odstranění následujících složek:

  • C:\Program Files\dotnet\sdk-manifests
  • C:\Program Files\dotnet\metadata
  • C:\Program Files\dotnet\packs
  • C:\Program Files\dotnet\library-packs
  • C:\Program Files\dotnet\template-packs
  • C:\Program Files\dotnet\sdk\6.* nebo C:\Program Files\dotnet\sdk\7.*
  • C:\Program Files\dotnet\host\fxr\6.* nebo C:\Program Files\dotnet\host\fxr\7.*

Po provedení tohoto procesu byste měli být schopni přeinstalovat rozhraní .NET MAUI buď prostřednictvím sady Visual Studio, nebo instalací zvolené verze sady .NET SDK a spuštěním dotnet workload install maui příkazu.

Mac

Visual Studio pro Mac instalační program a aktualizátor používají dotnet workload install příkazy k instalaci souborů .NET MAUI .pkg.

Vzhledem k tomu , že .pkg soubory nejde odinstalovat, nejjednodušším přístupem k odinstalaci úloh na Macu je spuštěním následujících příkazů odstranit zadané složky:

rm -r ~/.dotnet/
sudo rm -r /usr/local/share/dotnet/

Po spuštění těchto příkazů byste měli být schopni přeinstalovat rozhraní .NET MAUI buď prostřednictvím Visual Studio pro Mac, nebo instalací zvolené verze sady .NET SDK a spuštěním dotnet workload install maui příkazu.

Verze platformy není k dispozici

Visual Studio nemusí vyřešit požadované úlohy, pokud se pokusíte zkompilovat projekt a zobrazí se chyba podobná následujícímu textu:

Verze platformy není k dispozici pro jednu nebo více cílových architektur, i když zadali platformu: net8.0-android, net8.0-ios, net8.0-maccatalyst

K tomuto problému obvykle dochází z toho, že je nainstalovaná sada SDK x86 a x64 a používá se verze x86. Visual Studio a .NET MAUI vyžadují sadu x64 .NET SDK. Pokud má váš operační systém nejprve proměnnou pro systém PATH , která překládá sadu x86 SDK, musíte to vyřešit odebráním sady x86 .NET SDK z PATH proměnné nebo zvýšením úrovně sady x64 .NET SDK tak, aby se vyřešila jako první. Další informace o řešení potíží se sadou x86 a x64 SDK najdete v tématu Instalace .NET ve Windows – Řešení potíží.

Typ nebo obor názvů Default neexistuje.

Při používání Contacts rozhraní API se může zobrazit následující chyba související s iOSem a macOS:

The type or namespace name 'Default' does not exist in the namespace 'Contacts' (are you missing an assembly reference?)

Platformy iOS a macOS obsahují kořenový obor názvů s názvem Contacts. Tento konflikt způsobí konflikt pro tyto platformy s oborem Microsoft.Maui.ApplicationModel.Communication názvů, který obsahuje typ Contacts . Obor Microsoft.Maui.ApplicationModel.Communication názvů se automaticky importuje nastavením <ImplicitUsings> v souboru projektu.

Pokud chcete napsat kód, který se také zkompiluje pro iOS a macOS, plně opravte Contacts typ. Případně zadejte direktivu using v horní části souboru kódu pro mapování Communication oboru názvů:

using Communication = Microsoft.Maui.ApplicationModel.Communication;

// Code that uses the namespace:
var contact = await Communication.Contacts.Default.PickContactAsync();

Xcode není aktuálně nainstalovaný nebo se nepodařilo najít

Po instalaci nástrojů příkazového řádku Xcode pomocí xcode-select --install, Visual Studio pro Mac může při pokusu o sestavení aplikací .NET MAUI, které cílí na iOS nebo Mac Catalyst, zobrazit zprávu "Xcode není aktuálně nainstalován nebo nebyl nalezen". V tomto scénáři zkontrolujte, že máte také nainstalovaný Xcode z App Storu. Potom spusťte Xcode a přejděte na Nástroje příkazového řádku Umístění > předvoleb > Xcode > a zkontrolujte, jestli je rozevírací seznam prázdný. Pokud je prázdný, vyberte rozevírací seznam a pak vyberte umístění nástrojů příkazového řádku Xcode. Potom zavřete Xcode a restartujte Visual Studio pro Mac.

Nepodařilo se najít platnou sadu aplikací Xcode

Pokud se při pokusu o sestavení aplikací .NET MAUI, které cílí na iOS nebo Mac Catalyst, zobrazí se chyba "Nepodařilo se najít platnou sadu aplikací Xcode na adrese /Library/Developer/CommandLineTools", zkuste řešení popsané v Xcode v současné době nainstalovat nebo se nepodařilo najít. Pokud stále nemůžete získat přístup k rozevíracímu seznamu Nástroje příkazového řádku Umístění > předvoleb > Xcode>, spusťte následující příkaz:

sudo xcode-select --reset

Nejde najít verzi Xcode

V některých scénářích se sestavení aplikace .NET MAUI v iOSu nebo Mac Catalystu může pokusit použít verzi Xcode, která už není na vašem počítači nainstalovaná. Pokud k tomu dojde, zobrazí se podobná chybová zpráva:

xcodebuild: error: SDK "/Applications/Xcode_14.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" cannot be located.
xcrun: error: sh -c '/Applications/Xcode_14.1.app/Contents/Developer/usr/bin/xcodebuild -sdk /Applications/Xcode_14.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -find dsymutil 2> /dev/null' failed with exit code 16384: (null) (errno=Invalid argument)
xcrun: error: unable to find utility "dsymutil", not a developer tool or in PATH

Při vytváření aplikace .NET pro iOS a .NET for Mac Catalyst pomocí následujícího procesu určete, kterou verzi Xcode použít:

  1. MD_APPLE_SDK_ROOT Pokud je proměnná prostředí nastavená, použijte její hodnotu.
  2. Pokud soubor ~/Library/Preferences/Xamarin/Nastavení.plist existuje, použijte hodnotu definovanou uvnitř.
  3. Použijte hodnotu xcode-select -p.
  4. Použijte /Applications/Xcode.app.

Proto doporučeným přístupem k určení umístění Xcode na vašem počítači je nastavit MD_APPLE_SDK_ROOT proměnnou prostředí na cestu verze Xcode. Další informace najdete v tématu Sestavení s konkrétní verzí Xcode.

Potom můžete ze svého počítače bezpečně odstranit ~/Library/Preferences/Xamarin/Nastavení.plist.

Diagnostika problémů v hybridních aplikacích Blazor

BlazorWebView má integrované protokolování, které vám může pomoct s diagnostikou problémů v hybridní aplikaci Blazor. Toto protokolování můžete povolit dvěma kroky:

  1. Povolte BlazorWebView a související komponenty pro protokolování diagnostických informací.
  2. Nakonfigurujte protokolovací nástroj pro zápis výstupu protokolu do místa, kde ho můžete zobrazit.

Další informace najdete v tématu Diagnostika problémů v hybridních aplikacích Blazor.

Zakázání balení obrázků

Pro účely řešení potíží může být zabalení prostředků image zakázáno nastavením $(EnableMauiImageProcessing) vlastnosti sestavení na false první <PropertyGroup> uzel v souboru projektu:

<EnableMauiImageProcessing>false</EnableMauiImageProcessing>

Zakázání balení úvodní obrazovky

Pro účely řešení potíží je možné generování prostředků úvodní obrazovky zakázat nastavením $(EnableSplashScreenProcessing) vlastnosti sestavení na false první <PropertyGroup> uzel v souboru projektu:

<EnableSplashScreenProcessing>false</EnableSplashScreenProcessing>

Zakázání balení písem

Pro účely řešení potíží je možné balení prostředků písma zakázat nastavením $(EnableMauiFontProcessing) vlastnosti sestavení na false první <PropertyGroup> uzel v souboru projektu:

<EnableMauiFontProcessing>false</EnableMauiFontProcessing>

Zakázání balení souborů assetů

Pro účely řešení potíží je možné zakázat balení prostředků prostředků assetu nastavením $(EnableMauiAssetProcessing) vlastnosti sestavení na false první <PropertyGroup> uzel v souboru projektu:

<EnableMauiAssetProcessing>false</EnableMauiAssetProcessing>

Vygenerování prázdné úvodní obrazovky

Pro účely řešení potíží můžete vygenerovat prázdnou úvodní obrazovku, pokud nemáte <MauiSplashScreen> položku a nemáte vlastní úvodní obrazovku. Toho lze dosáhnout nastavením $(EnableBlankMauiSplashScreen) vlastnosti sestavení na true první <PropertyGroup> uzel v souboru projektu:

<EnableBlankMauiSplashScreen>true</EnableBlankMauiSplashScreen>

Generování prázdné úvodní obrazovky přepíše jakoukoli vlastní úvodní obrazovku a způsobí odmítnutí obchodu s aplikacemi. Může ale být užitečným přístupem při testování, abyste měli jistotu, že uživatelské rozhraní aplikace je správné.

Chyby duplicitního názvu souboru obrázku

U duplicitních názvů obrázků se můžou zobrazit chyby sestavení:

Byl zjištěn jeden nebo více duplicitních názvů souborů. Všechny výstupní názvy souborů obrázku musí být jedinečné.

K tomu dochází pro MauiIcon a MauiImage položky, protože z .NET 8, .NET MAUI kontroluje, aby se zajistilo, že neexistují žádné duplicitní názvy souborů prostředků obrázku.

K chybě dojde, když máte identické názvy souborů ve více složkách a za určitých okolností, pokud máte stejné názvy souborů s různými rozšířeními v různých složkách. Například k chybě sestavení dojde u souboru PNG na adrese Resources/Images/PNG/dotnet_bot.png a soubor SVG v části Resources/Images/SVG/dotnet_bot.svg , protože soubory SVG se v době sestavení převedou na soubory PNG.

K chybě dojde také v případě, že k zahrnutí všech obrázků do složky použijete Include atribut u MauiImage položky a pak zahrnete také určitý soubor obrázku:

<MauiImage Include="Resources\Images\*" />
<MauiImage Include="Resources\Images\dotnet_bot.svg" BaseSize="168,208" />

Pokud se zobrazí tato chyba sestavení, můžete ji opravit tím, že zajistíte, že soubor projektu neobsahuje duplicitní obrázky. Chcete-li to provést, změňte libovolný MauiIcon nebo MauiImage odkaz na konkrétní soubor tak, aby místo atributu UpdateInclude používal atribut:

<MauiImage Include="Resources\Images\*" />
<MauiImage Update="Resources\Images\dotnet_bot.svg" BaseSize="168,208" />

Informace o atributech elementu položky MSBuild naleznete v tématu Item element (MSBuild): Atributy a elementy.