Mevcut Mac Uygulamalarını Güncelleştirme
Mevcut bir uygulamanın Birleşik API'yi kullanacak şekilde güncelleştirilmesi, proje dosyasının kendisinde ve uygulama kodunda kullanılan ad alanları ve API'lerde değişiklik yapılmasını gerektirir.
64 Bit'e Giden Yol
Yeni Birleşik API'ler, Xamarin.Mac uygulamasından 64 bit cihaz mimarilerini desteklemek için gereklidir. 1 Şubat 2015 itibarıyla Apple, Mac App Store'a yapılan tüm yeni uygulama gönderimlerinin 64 bit mimarileri desteklemesini gerektirir.
Xamarin, Klasik API'den Birleşik API'ye geçiş işlemini otomatikleştirmek için hem Mac için Visual Studio hem de Visual Studio için araçlar sağlar veya proje dosyalarını el ile dönüştürebilirsiniz. Otomatik araçların kullanılması yüksek oranda önerilir ancak bu makalede her iki yöntem de ele alınacaktır.
Başlamadan Önce...
Mevcut kodunuzu Birleşik API'ye güncelleştirmeden önce, tüm derleme uyarılarını ortadan kaldırmanız kesinlikle önerilir. Birleşik'e geçiş yaptıktan sonra Klasik API'deki birçok uyarı hataya dönüşür. Klasik API'den gelen derleyici iletileri genellikle nelerin güncelleştirildiği hakkında ipuçları sağladığından, bunları başlamadan önce düzeltmek daha kolaydır.
Otomatik Güncelleştirme
Uyarılar düzeltildikten sonra, Mac için Visual Studio veya Visual Studio'da mevcut bir Mac projesini seçin ve Proje menüsünden Xamarin.Mac Birleştirilmiş API'ye Geçir'i seçin. Örneğin:
Otomatik geçiş çalışmadan önce bu uyarıyı kabul etmeniz gerekir (açıkçası bu maceraya başlamadan önce yedeklemelere/kaynak denetimine sahip olduğunuzdan emin olmalısınız):
Xamarin.Mac uygulamasında Birleştirilmiş API kullanılırken seçilebilen desteklenen iki Hedef Çerçeve türü vardır:
- Xamarin.Mac Mobile Framework - Bu, tam Masaüstü çerçevesinin bir alt kümesini destekleyen Xamarin.iOS ve Xamarin.Android tarafından kullanılan aynı ayarlanmış .NET çerçevesidir. Bu, üstün bağlantı davranışı nedeniyle daha küçük ortalama ikili dosyalar sağladığından önerilen çerçevedir.
- Xamarin.Mac .NET 4.5 Framework - Bu çerçeve yine Masaüstü çerçevesinin bir alt kümesidir. Ancak, Mobil çerçeveden çok daha az tam Masaüstü çerçevesi kırpılır ve çoğu NuGet Paketi veya 3. taraf kitaplıkları ile "yalnızca çalışmalıdır". Bu, geliştiricinin desteklenen bir çerçeveyi kullanmaya devam ederken standart Masaüstü derlemelerini kullanmasına olanak tanır, ancak bu seçenek daha büyük uygulama paketleri oluşturur. Bu, Xamarin.Mac Mobile Framework ile uyumlu olmayan üçüncü taraf .NET derlemelerinin kullanıldığı önerilen çerçevedir. Desteklenen derlemelerin listesi için lütfen Derlemeler belgelerimize bakın.
Hedef Çerçeveler ve Xamarin.Mac uygulamanız için belirli bir hedefi seçmenin etkileri hakkında ayrıntılı bilgi için lütfen Hedef Çerçeveler belgelerimize bakın.
Araç temelde aşağıda sunulan El ile Güncelleştir bölümünde açıklanan tüm adımları otomatikleştirir ve mevcut bir Xamarin.Mac projesini Birleşik API'ye dönüştürmenin önerilen yöntemidir.
El ile Güncelleştirme Adımları
Uyarılar düzeltildikten sonra Xamarin.Mac uygulamalarını yeni Birleştirilmiş API'yi kullanacak şekilde el ile güncelleştirmek için aşağıdaki adımları izleyin:
1. Proje Türünü ve Derleme Hedeflerini Güncelleştir
csproj dosyalarınızdaki proje aromasını olarak 42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23
A3F8F2AB-B479-4A4A-A458-A89E7DC349F1
değiştirin. Csproj dosyasını bir metin düzenleyicisinde düzenleyerek öğesindeki <ProjectTypeGuids>
ilk öğeyi gösterildiği gibi değiştirin:
İçeri Xamarin.Mac.targets
Xamarin.Mac.CSharp.targets
aktar öğesini gösterildiği gibi olarak değiştirin:
öğesinin arkasına aşağıdaki kod satırlarını <AssemblyName>
ekleyin:
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<TargetFrameworkIdentifier>Xamarin.Mac</TargetFrameworkIdentifier>
Örnek:
2. Proje Başvurularını Güncelleştirme
Mac uygulama projesinin Başvurular düğümünü genişletin. Başlangıçta bu ekran görüntüsüne benzer bir *bozuk- XamMac başvurusu gösterecektir (çünkü proje türünü yeni değiştirdik):
XamMac girişinin yanındaki Dişli Simgesine tıklayın ve bozuk başvuruyu kaldırmak için Sil'i seçin.
Ardından, Çözüm Gezgini Başvurular klasörüne sağ tıklayın ve Başvuruları Düzenle'yi seçin. Başvuru listesinin en altına kaydırın ve Xamarin.Mac'in yanına bir denetim yerleştirin.
Proje başvurularını kaydetmek için Tamam'a basın.
3. MonoMac'i Ad Alanından Kaldırma
Deyimlerdeki ad alanından veya bir sınıf adının tam olarak nitelendiği using
her yerden MonoMac ön ekini kaldırın (örneğin, MonoMac.AppKit
yalnızca AppKit
olur).
4. Türleri Yeniden Eşleme
Daha önce kullanılan bazı Türlerin (örneğin, ile örnekleri) System.Drawing.RectangleF
CoreGraphics.CGRect
yerini alan yerel türler kullanıma sunulmuştur. Türlerin tam listesi yerel türler sayfasında bulunabilir.
5. Yöntem Geçersiz Kılmalarını Düzeltme
Bazı AppKit
yöntemlerin imzaları yeni yerel türleri kullanacak şekilde değiştirilmiştir (örneğin nint
). Özel alt sınıflar bu yöntemleri geçersiz kılarsa, imzalar artık eşleşmez ve hatalara neden olur. Yerel türleri kullanarak alt sınıfı yeni imzayla eşleşecek şekilde değiştirerek bu yöntem geçersiz kılmalarını düzeltin.
Dikkat edilmesi gereken noktalar
Mevcut bir Xamarin.Mac projesini Klasik API'den yeni Birleşik API'ye dönüştürürken uygulamanın bir veya daha fazla Bileşen veya NuGet Paketine dayalı olması durumunda aşağıdaki noktalar dikkate alınmalıdır.
Bileşenler
Uygulamanıza dahil ettiğiniz tüm bileşenlerin de Birleşik API'ye güncelleştirilmiş olması gerekir, aksi takdirde derlemeye çalıştığınızda bir çakışmayla karşılaşırsınız. Dahil edilen bileşenler için geçerli sürümü, Birleşik API'yi destekleyen Xamarin Bileşen Deposu'ndan yeni bir sürümle değiştirin ve temiz bir derleme yapın. Henüz yazar tarafından dönüştürülmemiş tüm bileşenler, bileşen deposunda yalnızca 32 bit uyarı görüntüler.
NuGet Desteği
Birleştirilmiş API desteğiyle çalışmak için NuGet'de değişikliklere katkıda bulunmamıza rağmen, NuGet'in yeni bir sürümü olmadığından NuGet'in yeni API'leri tanımasını sağlamayı değerlendiriyoruz.
Bu zamana kadar, bileşenlerde olduğu gibi, projenize eklediğiniz tüm NuGet Paketini Birleşik API'leri destekleyen bir sürüme geçirmeniz ve daha sonra temiz bir derleme yapmanız gerekir.
Önemli
"Hata 3 Aynı Xamarin.Mac projesine hem 'monomac.dll' hem de 'Xamarin.Mac.dll' eklenemiyor şeklinde bir hatanız varsa - 'Xamarin.Mac.dll' açıkça başvurulur, Uygulamanızı Birleştirilmiş API'lere dönüştürdükten sonra 'monomac.dll' öğesine 'xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null' tarafından başvurulsa da, bunun nedeni genellikle projede Birleştirilmiş API'ye güncelleştirilmemiş bir bileşenin veya NuGet Paketinin bulunmasıdır. Mevcut bileşeni/NuGet'i kaldırmanız, Birleşik API'leri destekleyen bir sürüme güncelleştirmeniz ve temiz bir derleme yapmanız gerekir.
Xamarin.Mac Uygulamalarının 64 Bit Derlemelerini Etkinleştirme
Birleşik API'ye dönüştürülen bir Xamarin.Mac mobil uygulaması için geliştiricinin uygulamanın Seçenekler bölümünden 64 bit makineler için uygulamanın oluşturulmasını etkinleştirmesi gerekir. 64 bit derlemeleri etkinleştirme hakkında ayrıntılı yönergeler için lütfen 32/64 bit PlatformDa Dikkat Edilmesi Gerekenler belgesinin Xamarin.Mac Uygulamalarının 64 Bit Derlemelerini Etkinleştirme belgesine bakın.
Bitiriyor
Xamarin.Mac uygulamanızı Klasik'ten Birleşik API'lere dönüştürmek için otomatik veya el ile yöntemi kullanmayı tercih edip etmediğinize bakılmaksızın, daha fazla el ile müdahale gerektiren birkaç örnek vardır. Bilinen sorunlar ve geçici çözüm için lütfen Kodu Birleşik API'ye Güncelleştirme İpuçları belgemize bakın.