Xamarin
Önemli
Visual Studio App Center 31 Mart 2025'te kullanımdan kaldırılıyor. Tamamen kullanımdan kaldırılana kadar Visual Studio App Center'ı kullanmaya devam edebilirsiniz ancak geçiş yapmayı düşünebileceğiniz birkaç önerilen alternatif vardır.
Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.
Xamarin.iOS derlemelerim proje dosyası (.csproj) yerine çözüm dosyasından (.sln) derleniyor
Xamarin.iOS derlemeleriniz çözüm dosyasından (.sln) çalıştırıldığında, denetlemek isteyebileceğiniz birkaç şey vardır.
Android ve UWP projeleri, iOS derlemelerine yönelik derleme yapılandırmaları için kodunuzda devre dışı bırakılmalıdır. Çözümün yapılandırma eşlemelerine gidin ve iPhone ve iPhoneSimulator'ı hedefleyen tüm eşlemeler için farklı platformları hedefleyen tüm projelerin işaretini kaldırın. Bu yapılandırma, derlemeye .sln
başladığında başka projeler oluşturmaya çalışmamasını sağlar.
Xamarin.iOS derlemelerim imzalama bilgileri sağlamam gerektiğini iddia ederek başarısız oldu
Xamarin.iOS derlemeleriniz imzalanmamışsa ancak derleme işlemi imzalama gerektiriyorsa, bunun nedeni büyük olasılıkla App Center dal yapılandırmasını seçmiş Sign builds: Off
olmanızdır.
Derleme günlüğünüzde aşağıdakiler varsa:
RequireProvisioningProfile: True.
Bu, projenizin kendisinin imzalama için yapılandırıldığı ve App Center yapılandırmasına rağmen imzalama uyguladığı anlamına gelir.
Bunu düzeltmek için IDE'nizde Proje Seçenekleri > Derleme > iOS Paket İmzalama'yı açın ve proje yapılandırmanızın (örneğin, Hata Ayıkla|iPhoneSimulator) Otomatik dışında herhangi bir imzalama bilgisi içermediğinden emin olun.
Xamarin.Android derlemem Hata: APK dosyası bulunamadı hatasıyla başarısız oldu.
Xamarin Android Postprocess görevi sırasında derlemenin başarısız olmasının yaygın nedenlerinden biri, Android proje dosyasındaki özellikte yanlış bir değer <OutputPath>
olmasıdır. Denetlemek için Xamarin.Android > Proje Seçenekleri > Derleme > Çıkışı'na gidin ve derleme yapılandırmanızın (Hata Ayıkla/Yayın) varsayılan konumu işaret ettiğini doğrulayın. Genellikle olmalıdır YourProjectDir/bin/$(Configuration)
.
Xamarin.iOS uygulama dalımı imzalamadan derlenmesi için ayarladım ama derlemem imzalama bilgilerini sağlamam gerektiğini iddia ederek başarısız oldu
App Center dal yapılandırmasında öğesini seçtiyseniz Sign builds: Off
ve derleme günlüğünüz öğesini içeriyorsa RequireProvisioningProfile: True
bu, projenizin kendisinin imzalama için yapılandırıldığı ve App Center yapılandırmasına rağmen imzalama uygulamayı deneyeceği anlamına gelir. Bunu düzeltmek için IDE'nizde Proje Seçenekleri > Derleme > iOS Paket İmzalama'yı açın ve proje yapılandırmanızın (örneğin, Hata Ayıkla|iPhoneSimulator) Otomatik dışında herhangi bir imzalama bilgisi içermediğinden emin olun.
Xamarin.iOS simülatörü derlemem iOS Simülatörüne yüklenemedi ve "Chmod başarısız oldu ... /Appname.iOS.app/Appname.iOS : Böyle bir dosya veya dizin yok" hatasıyla.
Visual Studio'da bir Xamarin.iOS projesi oluşturduğunuzda, iPhoneSimulator için varsayılan yapılandırma i386 + x86_64 desteklenen mimarilere sahiptir. Bu tür yapılandırmadan derleyen .app dosyası bir simülatöre yüklenemez. Proje Seçenekleri > Derleme iOS Derlemesi'ni > açın ve iPhoneSimulator yapılandırması için Desteklenen mimarileri i386 veya x86_64 olarak değiştirin.
Xamarin derlemem hata MSB4018 başarısız oluyor: "WriteRestoreGraphTask" görevi beklenmedik bir şekilde başarısız oldu.
Çözümünüz PCL veya daha eski .NET Standard projelerini ve daha yeni .NET Standart projelerini içeriyor gibi görünüyor. Bu, dosyalarda .csproj
hem hem de AssetTargetFallback
PackageTargetFallback
başvuruları içerebilecekleri anlamına gelir. Derleme günlükleriniz aşağıdaki gibi iletiler de içerir:
error MSB4018: NuGet.Commands.RestoreCommandException: PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.
Bu sorunu çözmek için PackageTargetFallback'i kaldırın (eski PCL .csproj
dosyalarında olma eğilimindedir) veya AssetTargetFallback olarak yeniden adlandırın. Çözüm bu StackOverflow iş parçacığında da açıklanmıştır.
Xamarin derlemem şu hatayla başarısız oluyor: Bu proje, bu bilgisayarda eksik olan NuGet paketlerine başvuruda bulundu.
Uygulamanızı derlemek için tüm paketler geri yüklenmemiş gibi görünüyor. Derleme günlükleriniz aşağıdaki gibi iletiler de içerir:
warning MSB3245: Could not resolve this reference. Could not locate the assembly "ASSEMBLY_NAME". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
error CS0246: The type or namespace name 'TYPE_OR_NAMESPACE_NAME' could not be found (are you missing a using directive or an assembly reference?)
Bu sorunu çözmek için, deponuzdaki her çözüm için tüm paketleri geri yükleyen aşağıdaki komutlarla derleme öncesi betiği appcenter-pre-build.sh
kullanabilirsiniz:
#!/bin/bash
find $APPCENTER_SOURCE_DIRECTORY -name '*.sln' -print0 | xargs -0 -n1 nuget restore -DisableParallelProcessing
Xamarin uygulamam için birim testleri çalıştırmak istiyorum
Xamarin derlemelerinizde birim testleri çalıştırmak için derleme sonrası betiği kullanın. Örneğin, NUnit tabanlı projenizin adında Test varsa, sonuçları oluşturmak, çalıştırmak ve görüntülemek için aşağıdaki betiği kullanabilirsiniz:
echo "Found NUnit test projects:"
find $APPCENTER_SOURCE_DIRECTORY -regex '.*Test.*\.csproj' -exec echo {} \;
echo
echo "Building NUnit test projects:"
find $APPCENTER_SOURCE_DIRECTORY -regex '.*Test.*\.csproj' -exec msbuild {} \;
echo
echo "Compiled projects to run NUnit tests:"
find $APPCENTER_SOURCE_DIRECTORY -regex '.*bin.*Test.*\.dll' -exec echo {} \;
echo
echo "Running NUnit tests:"
find $APPCENTER_SOURCE_DIRECTORY -regex '.*bin.*Test.*\.dll' -exec nunit3-console {} \;
echo
echo "NUnit tests result:"
find . -name 'TestResult.xml' -exec cat {} \;
Hata alıyorum: Proje bulunamadı ve Xamarin derlemeleri için yapılandırma bulunamadı
ve'nin bulunduğu depo derinliğiyle .csproj
.sln
ilgili bir sorun olabilir. Performans nedeniyle geçerli çözümleyicide bir sınırlama vardır.
Dosyalar için .csproj
, depo kökü de dahil olmak üzere dört dizinden daha derin olmamalıdır.
Dosyalar için .sln
, depo kökü de dahil olmak üzere iki dizinden daha derin olmamalıdır.
Özel bir NuGet akışını geri yüklemek Nasıl yaparım??
NuGet.Config dosyası depoda iade edilir ve .sln yanında veya deponuzun kök düzeyinde yer alırsa App Center, aşağıdaki örnekte gösterildiği gibi eklendiğinde özel NuGet akışlarınızı geri yükler. Kimlik bilgileri ortam değişkenleri kullanılarak güvenli bir şekilde eklenebilir.
Mac derleme makineleri için:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
<add key="MyGet" value="https://www.myget.org/F/MyUsername/api/v2/index.json" />
<add key="MyAuthNuget" value="https://nuget.example.com/v2/index.json" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<packageSourceCredentials>
<MyAuthNuget>
<add key="Username" value="%USER_VARIABLE%" />
<add key="ClearTextPassword" value="%PASSWORD_VARIABLE%" />
</MyAuthNuget>
</packageSourceCredentials>
</configuration>
Windows derleme makineleri için bkz. UWP C#.
Karmaşık yapılandırmalarınız varsa ve daha fazla bilgiye ihtiyacınız varsa NuGet davranışını yapılandırma bölümüne bakın.
Derlemeler CompileToNative'da takılıyor
Derleme, bu GitHub sorununda açıklandığı gibi benzer belirtilerle karşılaşıyorsa, sorunda önerilen aşağıdaki bağımsız değişkeni ekleyerek yalnızca ARM64 için derlemeyi deneyin:
<MtouchArch>ARM64</MtouchArch>
Derleme şu hatayla başarısız oldu: "_IsProjectRestoreSupported" hedefi projede yok.
Çözümde UWP projeniz varsa derleme sorunlarıyla karşılaşabilirsiniz; burada geri yükleme sırasında hataları NuGet'in eski sürümünde sessizce yoksayılır. Çözümde bu tür UWP projelerinin kaldırılması veya düzeltilmesi sorunu çözebilir. Plese bu GitHub sorunundaki ayrıntılara bakın.