Aracılığıyla paylaş


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:

Choose Migrate to Xamarin.Mac Unified API from the Project menu

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):

Agree to this warning before the automated migration will run

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-A7348ABAFB23A3F8F2AB-B479-4A4A-A458-A89E7DC349F1değiştirin. Csproj dosyasını bir metin düzenleyicisinde düzenleyerek öğesindeki <ProjectTypeGuids> ilk öğeyi gösterildiği gibi değiştirin:

Edit the csproj file in a text editor, replacing the first item in the ProjectTypeGuids element as shown

İçeri Xamarin.Mac.targetsXamarin.Mac.CSharp.targets aktar öğesini gösterildiği gibi olarak değiştirin:

Change the Import element that contains Xamarin.Mac.targets to Xamarin.Mac.CSharp.targets as shown

öğesinin arkasına aşağıdaki kod satırlarını <AssemblyName> ekleyin:

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<TargetFrameworkIdentifier>Xamarin.Mac</TargetFrameworkIdentifier>

Örnek:

Add these lines of code after the <AssemblyName> element

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):

It will initially show a broken- XamMac reference similar to this screenshot

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.

Scroll to the bottom of the list of references and place a check besides Xamarin.Mac

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 AppKitolur).

4. Türleri Yeniden Eşleme

Daha önce kullanılan bazı Türlerin (örneğin, ile örnekleri) System.Drawing.RectangleFCoreGraphics.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.