Windows Projelerini Ayarlama
Mevcut Xamarin.Forms bir çözüme yeni Windows projeleri ekleme
Eski Xamarin.Forms çözümlerin (veya macOS'ta oluşturulanların) Evrensel Windows Platformu (UWP) uygulama projeleri olmaz. Bu nedenle, bir Windows 10 (UWP) uygulaması oluşturmak için el ile bir UWP projesi eklemeniz gerekir.
Evrensel Windows Platformu uygulaması ekleme
Windows 10'da Visual Studio 2019'un UWP uygulamaları derlemesi önerilir. Evrensel Windows Platformu hakkında daha fazla bilgi için bkz. Evrensel Windows Platformu giriş.
UWP 2.1 ve üzeri sürümlerde Xamarin.Forms kullanılabilir ve Xamarin.Forms.Haritalar 2.2 ve üzeri sürümlerde Xamarin.Forms desteklenir.
Yararlı ipuçları için sorun giderme bölümüne bakın.
Windows 10 telefonlarında, tabletlerde ve masaüstlerinde çalışacak bir UWP uygulaması eklemek için şu yönergeleri izleyin:
1. Çözüme sağ tıklayın ve Yeni Proje Ekle>... öğesini seçin ve Boş Uygulama (Evrensel Windows) projesi ekleyin:
2. Yeni Evrensel Windows Platformu Projesi iletişim kutusunda, uygulamanın üzerinde çalıştırılacağı En düşük ve hedef Windows 10 sürümlerini seçin:
3. UWP projesine sağ tıklayın ve NuGet Paketlerini Yönet... öğesini seçin ve paketi ekleyinXamarin.Forms. Çözümdeki diğer projelerin de paketin aynı sürümüne Xamarin.Forms güncelleştirildiğinden emin olun.
4. Yeni UWP projesinin Derleme > Yapılandırma Yöneticisi penceresinde derlenmiş olduğundan emin olun (bu muhtemelen varsayılan olarak gerçekleşmeyecektir). Evrensel proje için Derleme ve Dağıtma kutularını işaretleyin:
5. Projeye sağ tıklayın ve Başvuru Ekle'yi > seçin ve uygulama projesine Xamarin.Forms (.NET Standard veya Paylaşılan Proje) bir başvuru oluşturun.
6. UWP projesinde App.xaml.cs düzenleyerek yöntem çağrısını Init
52. satır civarındaki yöntemin OnLaunched
içine ekleyin:
// under this line
rootFrame.NavigationFailed += OnNavigationFailed;
// add this line
Xamarin.Forms.Forms.Init (e); // requires the `e` parameter
7. UWP projesinde, öğesinde bulunan öğesini Grid
kaldırarak MainPage.xaml dosyasını Page
düzenleyin.
8. MainPage.xaml dosyasında için Xamarin.Forms.Platform.UWP
yeni xmlns
bir giriş ekleyin:
xmlns:forms="using:Xamarin.Forms.Platform.UWP"
9. MainPage.xaml dosyasında kök <Page
öğesini olarak <forms:WindowsPage
değiştirin:
<forms:WindowsPage
...
xmlns:forms="using:Xamarin.Forms.Platform.UWP"
...
</forms:WindowsPage>
10. UWP projesinde, sınıf adının devralma tanımlayıcısını kaldırmak : Page
için MainPage.xaml.cs düzenleyin (önceki adımda yapılan değişiklik nedeniyle artık öğesinden WindowsPage
devralınacağı için):
public sealed partial class MainPage // REMOVE ": Page"
11. MainPage.xaml.cs'daMainPage
, uygulamayı başlatmak için oluşturucuya çağrıyı Xamarin.Forms ekleyinLoadApplication
:
// below this existing line
this.InitializeComponent();
// add this line
LoadApplication(new YOUR_NAMESPACE.App());
Not
yönteminin LoadApplication
bağımsız değişkeni, .NET standart projenizde tanımlanan örnektir Xamarin.Forms.Application
.
12. Gerekli olan mevcut platform projelerinden tüm yerel kaynakları (ör. görüntü dosyaları) ekleyin.
Sorun giderme
".NET Native araç zinciriyle derleme" kullanılırken "Hedef Çağırma Özel Durumu"
UWP uygulamanız birden çok derlemeye başvuruyorsa (örneğin, üçüncü taraf denetim kitaplıkları veya uygulamanızın kendisi birden çok kitaplığa bölünmüşse), bu derlemelerden (özel işleyiciler gibi) Xamarin.Forms nesneleri yükleyemeyebilir.
Bu durum, projenin Özellikler Derleme Genel penceresindeki UWP uygulamaları için bir seçenek olan .NET Native ile Derle araç zinciri kullanılırken ortaya çıkabilir. > >
Bunu, aşağıdaki kodda gösterildiği gibi App.xaml.cs çağrısının Forms.Init
UWP'ye özgü aşırı yüklemesini kullanarak düzeltebilirsiniz (değerini kod başvurularınızın gerçek bir sınıfıyla değiştirmeniz ClassInOtherAssembly
gerekir):
// You'll need to add `using System.Reflection;`
List<Assembly> assembliesToInclude = new List<Assembly>();
// Now, add in all the assemblies your app uses
assembliesToInclude.Add(typeof (ClassInOtherAssembly).GetTypeInfo().Assembly);
// Also do this for all your other 3rd party libraries
Xamarin.Forms.Forms.Init(e, assembliesToInclude);
// replaces Xamarin.Forms.Forms.Init(e);
doğrudan başvuru veya NuGet aracılığıyla Çözüm Gezgini başvuru olarak eklediğiniz her derleme için bir girdi ekleyin.
Bağımlılık Hizmetleri ve .NET Yerel Derlemesi
.NET Native derlemesi kullanan yayın derlemeleri, ana uygulama yürütülebilir dosyası dışında tanımlanan bağımlılık hizmetlerini (ayrı bir proje veya kitaplık gibi) çözümleyemez.
DependencyService.Register<T>()
Bağımlılık hizmeti sınıflarını el ile kaydetmek için yöntemini kullanın. Yukarıdaki örneğe göre aşağıdaki gibi yazmaç yöntemini ekleyin:
Xamarin.Forms.Forms.Init(e, assembliesToInclude);
Xamarin.Forms.DependencyService.Register<ClassInOtherAssembly>(); // add this