Udostępnij za pośrednictwem


Konfigurowanie projektów systemu Windows

Dodawanie nowych projektów systemu Windows do istniejącego Xamarin.Forms rozwiązania

Starsze Xamarin.Forms rozwiązania (lub utworzone w systemie macOS) nie będą miały projektów aplikacji platformy platforma uniwersalna systemu Windows (UWP). W związku z tym należy ręcznie dodać projekt platformy UWP, aby utworzyć aplikację systemu Windows 10 (UWP).

Dodawanie aplikacji platforma uniwersalna systemu Windows

Program Visual Studio 2019 w systemie Windows 10 jest zalecany do tworzenia aplikacji platformy UWP. Aby uzyskać więcej informacji na temat platforma uniwersalna systemu Windows, zobacz Wprowadzenie do platforma uniwersalna systemu Windows.

Platforma UWP jest dostępna w wersji Xamarin.Forms 2.1 lub nowszej, a Xamarin.Formsplatforma .Mapy jest obsługiwana w wersji Xamarin.Forms 2.2 lub nowszej.

Zapoznaj się z sekcją rozwiązywania problemów, aby uzyskać przydatne porady.

Postępuj zgodnie z tymi instrukcjami, aby dodać aplikację platformy uniwersalnej systemu Windows, która będzie działać na telefonach z systemem Windows 10, tabletach i komputerach stacjonarnych:

1. Kliknij rozwiązanie prawym przyciskiem myszy i wybierz polecenie Dodaj > nowy projekt... i dodaj projekt Pusta aplikacja (uniwersalny system Windows):

Add New Project Dialog

2. W oknie dialogowym Nowy projekt platforma uniwersalna systemu Windows wybierz minimalną i docelową wersję systemu Windows 10 uruchomioną przez aplikację:

New Universal Windows Platform Project Dialog

3. Kliknij prawym przyciskiem myszy projekt platformy UWP i wybierz polecenie Zarządzaj pakietami NuGet... i dodaj Xamarin.Forms pakiet. Upewnij się, że inne projekty w rozwiązaniu są również aktualizowane do tej samej wersji Xamarin.Forms pakietu.

4. Upewnij się, że nowy projekt platformy UWP zostanie utworzony w oknie Build > Configuration Manager (prawdopodobnie nie nastąpi to domyślnie). Zaznacz pola Kompiluj i Wdróż dla projektu Universal:

Configuration Manager Window

5. Kliknij prawym przyciskiem myszy projekt i wybierz pozycję Dodaj > odwołanie i utwórz odwołanie do Xamarin.Forms projektu aplikacji (.NET Standard lub Shared Project).

Reference Manager Dialog

6. W projekcie platformy UWP zmodyfikuj App.xaml.cs , aby uwzględnić Init wywołanie metody wewnątrz OnLaunched metody w wierszu 52:

// under this line
rootFrame.NavigationFailed += OnNavigationFailed;
// add this line
Xamarin.Forms.Forms.Init (e); // requires the `e` parameter

7. W projekcie platformy UWP zmodyfikuj plik MainPage.xaml , usuwając element zawarty Grid w elemecie Page .

8. W pliku MainPage.xaml dodaj nowy xmlns wpis dla Xamarin.Forms.Platform.UWPelementu :

xmlns:forms="using:Xamarin.Forms.Platform.UWP"

9. W pliku MainPage.xaml zmień element główny <Page na <forms:WindowsPage:

<forms:WindowsPage
...
   xmlns:forms="using:Xamarin.Forms.Platform.UWP"
...
</forms:WindowsPage>

10. W projekcie platformy UWP zmodyfikuj MainPage.xaml.cs, aby usunąć : Page specyfikator dziedziczenia dla nazwy klasy (ponieważ będzie ona teraz dziedziczyć z WindowsPage powodu zmiany wprowadzonej w poprzednim kroku):

public sealed partial class MainPage  // REMOVE ": Page"

11. W MainPage.xaml.cs dodaj wywołanie LoadApplication w konstruktorze MainPage , aby uruchomić aplikację Xamarin.Forms :

// below this existing line
this.InitializeComponent();
// add this line
LoadApplication(new YOUR_NAMESPACE.App());

Uwaga

Argumentem LoadApplication metody jest Xamarin.Forms.Application wystąpienie zdefiniowane w projekcie .NET Standard.

12. Dodaj wszystkie zasoby lokalne (np. pliki obrazów) z istniejących projektów platformy, które są wymagane.

Rozwiązywanie problemów

"Wyjątek wywołania docelowego" podczas korzystania z "Kompiluj z łańcuchem narzędzi platformy .NET Native"

Jeśli aplikacja platformy UWP odwołuje się do wielu zestawów (na przykład bibliotek kontrolek innych firm lub sama aplikacja jest podzielona na wiele bibliotek), Xamarin.Forms może nie być w stanie załadować obiektów z tych zestawów (takich jak niestandardowe programy renderujące).

Taka sytuacja może wystąpić w przypadku użycia łańcucha narzędzi Kompiluj z platformą .NET Native, który jest opcją dla aplikacji platformy UWP w oknie Właściwości > Kompiluj > ogólne dla projektu.

Można rozwiązać ten problem przy użyciu przeciążenia specyficznego Forms.Init dla platformy UWP wywołania w App.xaml.cs , jak pokazano w poniższym kodzie (należy zastąpić ClassInOtherAssembly rzeczywistą klasą, do której odwołuje się kod):

// 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);

Dodaj wpis dla każdego zestawu dodanego jako odwołanie w Eksplorator rozwiązań za pomocą bezpośredniego odwołania lub narzędzia NuGet.

Kompilacja usług Dependency Services i .NET Native

Kompilacje wydania korzystające z kompilacji programu .NET Native mogą nie rozwiązać problemów z usługami zależności zdefiniowanymi poza głównym plikiem wykonywalnym aplikacji (na przykład w osobnym projekcie lub bibliotece).

Użyj metody , DependencyService.Register<T>() aby ręcznie zarejestrować klasy usług zależności. Na podstawie powyższego przykładu dodaj metodę register w następujący sposób:

Xamarin.Forms.Forms.Init(e, assembliesToInclude);
Xamarin.Forms.DependencyService.Register<ClassInOtherAssembly>(); // add this