Behandeln von bekannten Problemen
In diesem Artikel werden einige der bekannten Probleme mit .NET Multiplatform App UI (.NET MAUI) beschrieben und wie Sie sie lösen oder umgehen können. Das .NET MAUI Repository beschreibt auch einige bekannte Probleme.
Die .NET MAUI-Workloads können nicht gefunden werden
Für die Installation der .NET MAUI-Workloads gibt es zwei Möglichkeiten:
- Visual Studio unter Windows kann .msi-Dateien für jedes Workload-Pack installieren.
dotnet workload install
-Befehle
Wenn Sie unter Windows nach der Installation von .NET MAUI über das Visual Studio-Installationsprogramm ein dotnet workload install
ausführen, kann Visual Studio in einen Zustand geraten, in dem es die .NET MAUI-Workloads nicht finden kann. Sie erhalten Build-Fehler, die Sie auffordern, die .NET MAUI-Workloads zu installieren, und es ist möglich, dass das System in einen Zustand gerät, in dem die Workloads nicht repariert oder neu installiert werden können. Weitere Informationen finden Sie in der GitHub-Ausgabe dotnet/sdk#22388.
Windows
Die Lösung für dieses Problem unter Windows ist die Deinstallation der .NET MAUI-Workloads über die Befehlszeilenschnittstelle, die Deinstallation aller .NET SDKs in der Systemsteuerung und die Deinstallation der .NET MAUI-Workloads in Visual Studio. Diese Deinstallationen können mit dem folgenden Verfahren durchgeführt werden:
- Führen Sie
dotnet workload uninstall maui
aus, wenn Sie jemals die Befehledotnet workload install
verwendet haben. - Deinstallieren Sie alle eigenständigen .NET SDK-Installationsprogramme über die Systemsteuerung. Diese Installationsprogramme haben Namen ähnlich wie
Microsoft .NET SDK 6.0.300
. - Deinstallieren Sie in jeder Instanz von Visual Studio die Visual Studio-Workloads .NET Multiplatform App UI Development und .NET Desktop Development.
Prüfen Sie anschließend, ob es weitere .msi
-Dateien gibt, die deinstalliert werden müssen, indem Sie den folgenden Befehl ausführen:
reg query HKLM\SOFTWARE\Microsoft\Windows\currentversion\uninstall\ -s -f manifest
Dieser reg query
-Befehl listet die .NET 6+ SDKs auf, die noch auf Ihrem Rechner installiert sind, wie etwa:
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
Wenn Sie eine ähnliche Ausgabe erhalten, sollten Sie die GUID für jedes Paket kopieren und das Paket mit dem Befehl msiexec
deinstallieren:
msiexec /x {EEC1BB5F-3391-43C2-810E-42D78ADF3140} /q IGNOREDEPENDENCIES=ALL
Dann sollten Sie den Befehl reg query
so lange ausführen, bis er keine Ergebnisse mehr liefert. Sobald es keine Ergebnisse mehr gibt und alle .NET 6+ SDKs deinstalliert sind, sollten Sie auch das Löschen der folgenden Ordner in Betracht ziehen:
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.*
oderC:\Program Files\dotnet\sdk\7.*
C:\Program Files\dotnet\host\fxr\6.*
oderC:\Program Files\dotnet\host\fxr\7.*
Nach diesem Vorgang sollten Sie in der Lage sein, .NET MAUI neu zu installieren, entweder über Visual Studio oder indem Sie die gewünschte .NET SDK-Version installieren und den Befehl dotnet workload install maui
ausführen.
Plattformversion ist nicht vorhanden
Wenn Sie versuchen, ein Projekt zu kompilieren und eine Fehlermeldung ähnlich dem folgenden Text erhalten, löst Visual Studio möglicherweise nicht die erforderlichen Workloads auf:
Für ein oder mehrere Ziel-Frameworks ist keine Plattformversion vorhanden, obwohl sie eine Plattform angegeben haben: net8.0-android, net8.0-ios, net8.0-maccatalyst
Dieses Problem tritt normalerweise auf, wenn ein x86- und ein x64-SDK installiert sind und die x86-Version verwendet wird. Visual Studio und .NET MAUI erfordern das x64 .NET SDK. Wenn Ihr Betriebssystem eine systemweite PATH
-Variable hat, die das x86-SDK zuerst auflöst, müssen Sie dies beheben, indem Sie entweder das x86-.NET-SDK aus der PATH
-Variable entfernen oder das x64-.NET-SDK höherstufen, damit es zuerst aufgelöst wird. Weitere Informationen zur Fehlerbehebung bei der Auflösung von x86- und x64-SDKs finden Sie unter Installation von .NET unter Windows – Fehlerbehebung.
Typ oder Namespace 'Default' existiert nicht
Wenn Sie die Contacts
API verwenden, kann der folgende Fehler in Bezug auf iOS und macOS auftreten:
The type or namespace name 'Default' does not exist in the namespace 'Contacts' (are you missing an assembly reference?)
Die Plattformen iOS und macOS enthalten einen Stamm-Namespace namens Contacts
. Dieser Konflikt verursacht einen Konflikt für die Plattformen mit dem Microsoft.Maui.ApplicationModel.Communication
Namespace, der einen Contacts
Typ enthält. Der Microsoft.Maui.ApplicationModel.Communication
-Namespace wird automatisch durch die <ImplicitUsings>
-Einstellung in der Projektdatei importiert.
Um Code zu schreiben, der auch für iOS und macOS kompiliert werden kann, qualifizieren Sie den Typ Contacts
vollständig. Alternativ können Sie eine using
-Anweisung am Anfang der Codedatei angeben, um den Communication
-Namenspace zuzuordnen:
using Communication = Microsoft.Maui.ApplicationModel.Communication;
// Code that uses the namespace:
var contact = await Communication.Contacts.Default.PickContactAsync();
Xcode ist derzeit nicht installiert oder konnte nicht gefunden werden
Nachdem Sie die Xcode-Befehlszeilentools mit xcode-select --install
installiert haben, zeigt Visual Studio Code möglicherweise die Meldung „Xcode ist derzeit nicht installiert oder konnte nicht gefunden werden“ an, wenn Sie versuchen, .NET MAUI-Apps für iOS oder Mac Catalyst zu erstellen. Stellen Sie in diesem Fall sicher, dass Sie auch Xcode aus dem App Store installiert haben. Starten Sie dann Xcode und gehen Sie zu Xcode > Einstellungen > Speicherorte > Befehlszeilen-Tools und überprüfen Sie, ob das Dropdown-Menü leer ist. Wenn es leer ist, wählen Sie das Dropdown-Menü und dann den Speicherort der Xcode-Befehlszeilentools aus. Schließen Sie dann Xcode und starten Sie Visual Studio Code neu.
Es konnte kein gültiges Xcode-App-Bundle gefunden werden
Wenn Sie die Fehlermeldung „Es konnte kein gültiges Xcode-App-Bundle unter '/Library/Developer/CommandLineTools' gefunden werden“ erhalten, wenn Sie versuchen, .NET MAUI-Apps zu erstellen, die auf iOS oder Mac Catalyst abzielen, versuchen Sie die in Xcode ist derzeit nicht installiert oder konnte nicht gefunden werden beschriebene Lösung. Wenn Sie immer noch nicht auf das Dropdown-Menü Xcode > Einstellungen > Speicherorte > Befehlszeilen-Tools zugreifen können, führen Sie den folgenden Befehl aus:
sudo xcode-select --reset
Xcode-Version kann nicht gefunden werden.
In einigen Szenarien kann beim Erstellen einer .NET MAUI-App unter iOS oder Mac Catalyst versucht werden, eine Version von Xcode zu verwenden, die nicht mehr auf Ihrem Computer installiert ist. Wenn dies geschieht, erhalten Sie eine Fehlermeldung ähnlich wie die folgende:
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
Beim Erstellen einer App verwenden .NET for iOS und .NET for Mac Catalyst den folgenden Prozess, um zu bestimmen, welche Xcode-Version verwendet werden soll:
- Wenn die
MD_APPLE_SDK_ROOT
-Umgebungsvariable festgelegt ist, verwenden Sie ihren Wert. - Wenn die Datei ~/Library/Preferences/Xamarin/Settings.plist vorhanden ist, verwenden Sie den darin definierten Wert.
- Verwenden Sie den Wert von
xcode-select -p
. - Verwenden Sie
/Applications/Xcode.app
.
Es wird daher empfohlen, zum Angeben des Speicherorts von Xcode auf Ihrem Computer die MD_APPLE_SDK_ROOT
-Umgebungsvariable auf den Pfad der Xcode-Version festzulegen. Weitere Informationen finden Sie unter Erstellen von Apps mit einer bestimmten Version von Xcode.
Anschließend können Sie ~/Library/Preferences/Xamarin/Settings.plist von Ihrem Computer löschen.
Diagnose von Problemen in Blazor Hybrid Apps
BlazorWebView verfügt über eine integrierte Protokollierung, die Ihnen bei der Diagnose von Problemen in Ihrer Blazor Hybrid-App helfen kann. Es gibt zwei Schritte, um diese Protokollierung zu aktivieren:
- Aktivieren Sie BlazorWebView und verwandte Komponenten zum Protokollieren von Diagnoseinformationen.
- Konfigurieren Sie einen Logger, der die Protokollausgabe an einen Ort schreibt, an dem Sie sie einsehen können.
Weitere Informationen finden Sie unter Probleme in Blazor Hybrid-Apps diagnostizieren.
Deaktivieren der Bildverpackung
Zur Fehlerbehebung kann das Paketieren von Bildressourcen deaktiviert werden, indem die $(EnableMauiImageProcessing)
Build-Eigenschaft im ersten <PropertyGroup>
-Knoten in Ihrer Projektdatei auf false
gesetzt wird:
<EnableMauiImageProcessing>false</EnableMauiImageProcessing>
Begrüßungsbildschirm-Paketierung deaktivieren
Zur Fehlerbehebung kann die Erzeugung von Begrüßungsbildschirm-Ressourcen deaktiviert werden, indem die $(EnableSplashScreenProcessing)
Build-Eigenschaft im ersten <PropertyGroup>
-Knoten der Projektdatei auf false
gesetzt wird:
<EnableSplashScreenProcessing>false</EnableSplashScreenProcessing>
Schriftartenpaketierung deaktivieren
Zur Fehlerbehebung kann das Paketieren von Schriftressourcen deaktiviert werden, indem die $(EnableMauiFontProcessing)
Build-Eigenschaft im ersten <PropertyGroup>
-Knoten in Ihrer Projektdatei auf false
gesetzt wird:
<EnableMauiFontProcessing>false</EnableMauiFontProcessing>
Ressourcendateipaketierung deaktivieren
Zur Fehlerbehebung kann die Ressourcenkomprimierung von Asset-Dateien deaktiviert werden, indem die $(EnableMauiAssetProcessing)
-Build-Eigenschaft im ersten <PropertyGroup>
-Knoten in Ihrer Projektdatei auf false
gesetzt wird:
<EnableMauiAssetProcessing>false</EnableMauiAssetProcessing>
Einen leeren Begrüßungsbildschirm generieren
Zur Fehlersuche kann ein leerer Begrüßungsbildschirm erzeugt werden, wenn Sie kein <MauiSplashScreen>
-Element und keinen benutzerdefinierten Begrüßungsbildschirm haben. Dies kann erreicht werden, indem die $(EnableBlankMauiSplashScreen)
-Build-Eigenschaft im ersten <PropertyGroup>
-Knoten in Ihrer Projektdatei auf true
gesetzt wird:
<EnableBlankMauiSplashScreen>true</EnableBlankMauiSplashScreen>
Das Erzeugen eines leeren Startbildschirms überschreibt jeden benutzerdefinierten Startbildschirm und führt zur Ablehnung im App Store. Es kann jedoch ein nützlicher Ansatz beim Testen sein, um sicherzustellen, dass die Benutzeroberfläche Ihrer App korrekt ist.
Fehler bei doppelten Bilddateinamen
Es kann zu Fehlern bei der Erstellung doppelter Bilddateinamen kommen:
Es wurden ein oder mehrere doppelte Dateinamen entdeckt. Alle Dateinamen der Bildausgabe müssen eindeutig sein.
Dies tritt bei MauiIcon
- und MauiImage
-Elementen auf, da .NET MAUI ab .NET 8 prüft, um sicherzustellen, dass es keine doppelten Dateinamen für Bildressourcen gibt.
Der Fehler tritt auf, wenn Sie identische Dateinamen in mehreren Ordnern haben, und in bestimmten Fällen, wenn Sie identische Dateinamen mit unterschiedlichen Erweiterungen in verschiedenen Ordnern haben. Beispielsweise tritt der Erstellungsfehler bei einer PNG-Datei unter Resources/Images/PNG/dotnet_bot.png und einer SVG-Datei unter Resources/Images/SVG/dotnet_bot.svg auf, da SVG-Dateien zur Erstellungszeit in PNG-Dateien umgewandelt werden.
Der Fehler tritt auch auf, wenn Sie das Include
-Attribut für ein MauiImage
-Element verwenden, um alle Bilder in einen Ordner einzuschließen und dann auch eine bestimmte Bilddatei einzuschließen:
<MauiImage Include="Resources\Images\*" />
<MauiImage Include="Resources\Images\dotnet_bot.svg" BaseSize="168,208" />
Wenn Sie diesen Buildfehler erhalten, kann dies behoben werden, indem Sie sicherstellen, dass Ihre Projektdatei keine doppelten Bilder enthält. Ändern Sie dazu alle MauiIcon
oder MauiImage
, die auf eine bestimmte Datei verweisen, sodass sie das Attribut Update
anstelle des Attributs Include
verwenden:
<MauiImage Include="Resources\Images\*" />
<MauiImage Update="Resources\Images\dotnet_bot.svg" BaseSize="168,208" />
Für Informationen über MSBuild-Elementattribute siehe Element (MSBuild): Attribute und Elemente.