Tak, Porting jest możliwe. Proponuję stworzyć nowy projekt w tym rozwiązaniu (większość rozwiązań tego gita już dodała obsługę UWP, jak zauważyłem) i przerobić większość rzeczy. W niektórych projektach wykorzystujących kod specyficzny dla platformy, ten port może nie działać, ponieważ niektóre interfejsy API zmieniły się z WP8 na UWP - jak zapewne wiesz.
Po tej procedurze nadal miałem problemy - nie miałem działającego pliku .appxmanifest, więc nie mogę utworzyć pliku .pfx. Powoduje to ostrzeżenie o braku pliku certifcate.
Nie jestem pewien, czy wszystkie kroki są konieczne. Zostawiam to jako pracę domową;)
Zresztą tutaj pokażę kilka kroków do portu TodoREST-projekt do UWP:
- rozładunek iOS i Droid projekt ułatwi to zadanie
- Odinstaluj wszystkie pakiety Nuget od przenośny i projekt WinPhone81
- Zmiana profilu klasy przenośny do Profile111 (odznacz WP8 Silverlight jako cel)
- teraz można ponownie zainstalować Xamarin.Forms i Newtonsoft.Json na przenośnych projektu (odinstalować było konieczne, aby zmienić profil - co było konieczne bec ause to budzi pewne błędy tutaj)
- Usuń app.config z projektem WinPhone81
Dodaj plik project.json
do projektu WinPhone81 i umieścić w następującej treści:
{
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0",
"Xamarin.Forms": "2.0.0.6482"
},
"frameworks": {
"uap10.0": { }
},
"runtimes": {
"win10-arm": { },
"win10-arm-aot": { },
"win10-x86": { },
"win10-x86-aot": { },
"win10-x64": { },
"win10-x64-aot": { }
}
}
Zapisz wszystko i blisko WinPhone81 projekt
W eksploratorze plików przejdź do folderu i edytuj Package.appxmanifest
Exchange Package Tag przez następujące:
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:m3="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="m3 mp">
... Usunąć i dodać następujące zamiast:
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0"/>
</Dependencies>
Edycja TodoREST.WinPhone81.csproj:
W pierwszym <PropertyGroup>
zastąpić <TargetPlatformVersion>
przez to:
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.10586.0</TargetPlatformMinVersion>
Zmień ProjectTypeGuids
do
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Na każdym PropertyGroup
z Condition=...
zastąpić WINDOWS_PHONE_APP
w DefineConstants przez WINDOWS_UAP
- Zapisz
- Odśwież projekt w Visual Studio
- Edit MainPage.xaml i zmienić
<forms:WindowsPhonePage
do <forms:WindowsPage
i tworzy przestrzeń nazw do using:Xamarin.Forms.Platform.UWP
(od .WinRT
)
- Tutaj musiałem zrestartować VS2015 z jakiegokolwiek powodu jako nie zauważyłem projektu.json
- Rozpocznij projekt i debuguj!
Mam nadzieję, że to odpowie na twoje pytania.
Czy chcesz dodać UWP (Universal Windows Platform)? Ten samouczek powinien pomóc w rozpoczęciu pracy: https://developer.xamarin.com/guides/xamarin-forms/platform-features/windows/installation/universal/. Wygląda na to, że tutorial jest oparty na Xamarin Forms, więc powinien działać dobrze z UWP, jeśli używasz najnowszej wersji Xamarin Forms. – dylansturg
Wiem, że minęło trochę czasu, odkąd zadałem to pytanie, ale wróciłem do tego problemu i nadal nie został on rozwiązany. Twój komentarz nie jest dokładnie tym, o co prosiłem, możesz mnie źle zrozumieć. Zaktualizowałem pytanie, podając więcej szczegółów. – Piotrek
Czy używasz programu Visual Studio 2013 lub 2015? – NineBerry