Bilinen sorunları giderme

Bu makalede .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) ile ilgili bilinen sorunlardan bazıları ve bunları nasıl çözebileceğiniz veya geçici olarak nasıl çözebileceğiniz açıklanır. .NET MAUI deposu, bilinen bazı sorunların ayrıntılarını da içerir.

.NET MAUI iş yükleri bulunamıyor

.NET MAUI iş yüklerini yüklemek için iki seçenek vardır:

  1. Windows üzerinde Visual Studio her iş yükü paketi için .msi dosyaları yükleyebilir.
  2. dotnet workload install Komut.

Windows'da, .NET MAUI'yi Visual Studio yükleyicisi aracılığıyla yükledikten sonra çalıştırırsanız dotnet workload install , Visual Studio .NET MAUI iş yüklerini bulabildiği bir durum girebilir. .NET MAUI iş yüklerini yüklemenizi söyleyen derleme hataları alırsınız ve iş yüklerinin onarılamayacağı veya yeniden yüklenebildiği bir durum girebilirsiniz. Daha fazla bilgi için bkz. GitHub sorunu dotnet/sdk#22388.

Windows

Windows'ta bu sorunun çözümü CLI aracılığıyla .NET MAUI iş yüklerini kaldırmak, Denetim Masası'daki tüm .NET SDK'larını kaldırmak ve Visual Studio'da .NET MAUI iş yüklerini kaldırmaktır. Bu kaldırma işlemleri aşağıdaki işlemle gerçekleştirilebilir:

  1. Komutları kullandıysanız dotnet workload install komutunu çalıştırındotnet workload uninstall maui.
  2. tek başına .NET SDK yükleyicilerini Denetim Masası kaldırın. Bu yükleyicilerin gibi adları Microsoft .NET SDK 6.0.300vardır.
  3. Visual Studio'nun her örneğinde .NET Çok platformlu Uygulama kullanıcı arabirimi geliştirme ve .NET masaüstü geliştirme Visual Studio iş yüklerini kaldırın.

Ardından, aşağıdaki komutu çalıştırarak kaldırılması gereken ek .msi dosyalar olup olmadığını denetleyin:

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

Bu reg query komut, makinenizde hala yüklü olan .NET 6+ SDK'ları listeler, örneğin:

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

Benzer bir çıkış alırsanız, her paket için GUID'yi kopyalamanız ve şu komutla msiexec paketi kaldırmanız gerekir:

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

Ardından, herhangi bir sonuç döndürmeyene kadar komutunu yürütmeye reg query devam etmelisiniz. Başka sonuç olmadığında ve tüm .NET 6+ SDK'lar kaldırıldıktan sonra aşağıdaki klasörleri silmeyi de düşünmelisiniz:

  • 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.* veya C:\Program Files\dotnet\sdk\7.*
  • C:\Program Files\dotnet\host\fxr\6.* veya C:\Program Files\dotnet\host\fxr\7.*

Bu işlemi takip ettikten sonra Visual Studio aracılığıyla veya seçtiğiniz .NET SDK sürümünü yükleyip komutunu çalıştırarak .NET MAUI'yi dotnet workload install maui yeniden yükleyebilmeniz gerekir.

Mac

Mac için Visual Studio yükleyicisi ve güncelleştiricisi .NET MAUI .pkg dosyalarını yüklemek için komutları kullanırdotnet workload install.

.pkg dosyalar kaldırılamadığından, Mac'te iş yüklerini kaldırmaya yönelik en basit yaklaşım, belirtilen klasörleri silmek için aşağıdaki komutları çalıştırmaktır:

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

Bu komutları yürüttkten sonra Mac için Visual Studio aracılığıyla veya seçtiğiniz .NET SDK sürümünü yükleyip komutunu çalıştırarak dotnet workload install maui .NET MAUI'yi yeniden yükleyebilmeniz gerekir.

Platform sürümü yok

Bir proje derlemeye çalışır ve aşağıdaki metne benzer bir hata alırsanız Visual Studio gerekli iş yüklerini çözemeyebilir:

Platform sürümü, bir platform belirtmelerine rağmen bir veya daha fazla hedef çerçeve için mevcut değildir: net8.0-android, net8.0-ios, net8.0-maccatalyst

Bu sorun genellikle bir x86 ve x64 SDK'sının yüklenmesinden ve x86 sürümünün kullanılmasından kaynaklanır. Visual Studio ve .NET MAUI için x64 .NET SDK gerekir. İşletim sisteminizin önce x86 SDK'sını çözümleyen sistem genelinde PATH bir değişkeni varsa, bunu düzeltmek için önce x86 .NET SDK'sını değişkenden PATH kaldırmanız veya x64 .NET SDK'sını yükseltmeniz gerekir. x86 ve x64 SDK çözümleme sorunlarını giderme hakkında daha fazla bilgi için bkz . Windows'a .NET yükleme - Sorun giderme.

'Varsayılan' türü veya ad alanı yok

API'yi Contactskullanırken iOS ve macOS ile ilgili aşağıdaki hatayı görebilirsiniz:

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

iOS ve macOS platformları adlı Contactsbir kök ad alanı içerir. Bu çakışma, bir tür içeren ad alanıyla Microsoft.Maui.ApplicationModel.Communication bu platformlar için çakışmaya Contacts neden olur. Ad Microsoft.Maui.ApplicationModel.Communication alanı, proje dosyasındaki <ImplicitUsings> ayar tarafından otomatik olarak içeri aktarılır.

iOS ve macOS için de derlenen kod yazmak için türü tam olarak niteleyin Contacts . Alternatif olarak, ad alanını eşlemek Communication için kod dosyasının en üstünde bir using yönerge sağlayın:

using Communication = Microsoft.Maui.ApplicationModel.Communication;

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

Xcode şu anda yüklü değil veya bulunamadı

kullanarak xcode-select --installXcode komut satırı araçlarını yükledikten sonra, iOS veya Mac Catalyst'i hedefleyen .NET MAUI uygulamaları oluşturmaya çalıştığınızda Mac için Visual Studio "Xcode şu anda yüklü değil veya bulunamadı" iletisini gösterebilir. Bu senaryoda, App Store'dan Xcode'un da yüklü olup olmadığını denetleyin. Ardından Xcode'ı başlatın ve Xcode > Tercihleri Konumları >> Komut Satırı Araçları'na gidin ve açılan listede boş olup olmadığını denetleyin. Boşsa, açılan listeyi seçin ve ardından Xcode komut satırı araçlarının konumunu seçin. Ardından Xcode'ı kapatın ve Mac için Visual Studio yeniden başlatın.

Geçerli bir Xcode uygulama paketi bulunamadı

iOS veya Mac Catalyst'i hedefleyen .NET MAUI uygulamaları oluşturmaya çalıştığınızda "'/Library/Developer/CommandLineTools'ta geçerli bir Xcode uygulama paketi bulunamadı' hatasını alırsanız, Xcode şu anda yüklü değil veya bulunamadı bölümünde açıklanan çözümü deneyin. Xcode > Tercihleri Konumları >> Komut Satırı Araçları açılan menüsüne hala erişemiyorsanız aşağıdaki komutu çalıştırın:

sudo xcode-select --reset

Xcode sürümü bulunamıyor

Bazı senaryolarda, iOS veya Mac Catalyst üzerinde bir .NET MAUI uygulaması derlemek, artık makinenizde yüklü olmayan bir Xcode sürümünü kullanmaya çalışabilir. Bu durum oluştuğunda aşağıdakine benzer bir hata iletisi alırsınız:

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

Bir uygulama oluştururken, .NET iOS ve .NET Mac Catalyst hangi Xcode sürümünün kullanılacağını belirlemek için aşağıdaki işlemi kullanır:

  1. MD_APPLE_SDK_ROOT Ortam değişkeni ayarlandıysa değerini kullanın.
  2. ~/Library/Preferences/Xamarin/Ayarlar.plist dosyası varsa, içinde tanımlanan değeri kullanın.
  3. değerini xcode-select -pkullanın.
  4. /Applications/Xcode.app adresini kullanın.

Bu nedenle, makinenizde Xcode'un konumunu belirtmek için önerilen yaklaşım, ortam değişkenini MD_APPLE_SDK_ROOT Xcode sürümünün yoluna ayarlamaktır. Daha fazla bilgi için bkz . Xcode'un belirli bir sürümüyle derleme.

Daha sonra ~/Library/Preferences/Xamarin/Ayarlar.plist dosyasını makinenizden güvenle silebilirsiniz.

Blazor Karma uygulamalarında sorunları tanılama

BlazorWebView Blazor Karma uygulamanızdaki sorunları tanılamanıza yardımcı olabilecek yerleşik günlüğe kaydetme özelliğine sahiptir. Bu günlüğü etkinleştirmenin iki adımı vardır:

  1. Tanılama bilgilerini günlüğe kaydetmek için ve ilgili bileşenleri etkinleştirin BlazorWebView .
  2. Günlük çıkışını görüntüleyebileceğiniz yere yazmak için bir günlükçü yapılandırın.

Daha fazla bilgi için bkz . Blazor Karma uygulamalarında sorunları tanılama.

Görüntü paketlemeyi devre dışı bırakma

Sorun giderme amacıyla, derleme özelliği false proje dosyanızdaki ilk <PropertyGroup> düğümde olarak ayarlanarak $(EnableMauiImageProcessing) görüntü kaynağı paketleme devre dışı bırakılabilir:

<EnableMauiImageProcessing>false</EnableMauiImageProcessing>

Giriş ekranı paketlemesini devre dışı bırakma

Sorun giderme amacıyla, proje dosyanızdaki ilk <PropertyGroup> düğümde derleme özelliği false ayarlanarak $(EnableSplashScreenProcessing) giriş ekranı kaynak oluşturma devre dışı bırakılabilir:

<EnableSplashScreenProcessing>false</EnableSplashScreenProcessing>

Yazı tipi paketlemeyi devre dışı bırakma

Sorun giderme amacıyla, derleme özelliği false proje dosyanızdaki ilk <PropertyGroup> düğümde olarak ayarlanarak $(EnableMauiFontProcessing) yazı tipi kaynağı paketleme devre dışı bırakılabilir:

<EnableMauiFontProcessing>false</EnableMauiFontProcessing>

Varlık dosyası paketlemeyi devre dışı bırakma

Sorun giderme amacıyla, proje dosyanızdaki ilk <PropertyGroup> düğümde derleme özelliği false ayarlanarak $(EnableMauiAssetProcessing) varlık dosyası kaynak paketleme devre dışı bırakılabilir:

<EnableMauiAssetProcessing>false</EnableMauiAssetProcessing>

Boş giriş ekranı oluşturma

Sorun giderme amacıyla, öğeniz yoksa ve özel giriş ekranınız yoksa boş bir <MauiSplashScreen> giriş ekranı oluşturulabilir. Bu, derleme özelliğini true proje dosyanızdaki ilk <PropertyGroup> düğümde olarak ayarlayarak $(EnableBlankMauiSplashScreen) elde edilebilir:

<EnableBlankMauiSplashScreen>true</EnableBlankMauiSplashScreen>

Boş bir giriş ekranı oluşturmak herhangi bir özel giriş ekranını geçersiz kılar ve uygulama mağazasının reddedilmesine neden olur. Ancak, uygulama kullanıcı arabiriminizin doğru olduğundan emin olmak için test etmede yararlı bir yaklaşım olabilir.

Yinelenen görüntü dosya adı hataları

Yinelenen görüntü dosya adları hakkında derleme hatalarıyla karşılaşabilirsiniz:

Bir veya daha fazla yinelenen dosya adı algılandı. Tüm görüntü çıktısı dosya adları benzersiz olmalıdır.

Bu durum ve MauiImage öğeleri için MauiIcon oluşur çünkü .NET 8'den .NET MAUI yinelenen görüntü kaynak dosya adları olmadığından emin olmak için denetler.

Hata, birden çok klasördeki aynı dosya adlarınız olduğunda ve bazı durumlarda farklı klasörlerde farklı uzantılara sahip aynı dosya adlarınız olduğunda oluşur. Örneğin, SVG dosyaları derleme zamanında PNG dosyalarına dönüştürüldüğünden, Kaynaklar/Görüntüler/PNG/dotnet_bot.png'daki bir PNG dosyası ve Kaynaklar/Görüntüler/SVG/dotnet_bot.svg'da bir SVG dosyası için derleme hatası oluşur.

Bir klasördeki Include tüm görüntüleri dahil etmek için bir MauiImage öğede özniteliğini kullanırsanız ve ardından belirli bir görüntü dosyasını eklerseniz de hata oluşur:

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

Bu derleme hatasını alırsanız, proje dosyanızın yinelenen görüntüler içermediğinden emin olarak düzeltilebilir. Bunu yapmak için, özniteliği yerine Include özniteliğini kullanmak Update için belirli bir dosyaya başvuran veya MauiIconMauiImage değerlerini değiştirin:

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

MSBuild öğe öğesi öznitelikleri hakkında bilgi için bkz . Öğe öğesi (MSBuild): Öznitelikler ve öğeler.