Visual Studio 15.5 Community - każdy projekt Xamarin.Forms z kolosalnymi błędami

0

Witam.
Nie wiedziałem czy mam to wrzucić do C# .NET czy tutaj. Najwyżej proszę o przeniesienie.

Od czwartku z tym walczę. Mam VS Community już jakiś czas zainstalowane. Ogólnie korzystam z ASP .NET Core i WinForms z DevExpressem. Nastały czasy, w których potrzebuje napisać aplikację mobilną, tylko na Androida. Za pomocą Visual Studio Installer zainstalowałem narzędzia Xamarin. Tworze pierwszy projekt - Crossplatform, Xamarin.Forms, odhaczam iOS. Ostatnia opcja do wyboru jaką mam to Shared Project albo .NET Standard.

Jeśli wybiorę Shared Project, cały projekt świeci na czerwono błędami bo nie wykrywa Xamarin.Forms, jak zrobię Build Solution to świeci tylko InitializeComponent(), że nie istnieje...
Wracamy do początku, wybieram .NET Standard - zero błędów ale nie działa kompletnie Intelisense, nie tworzą się automatycznie eventy do buttonów, nie widać kontrolek po stronie kodu.

W obu przypadkach w Manage NuGet Package mam aktualizacje do komponentów Xamarin ale gdy puszczam update rzuca mi: Package restore failed. Rolling back package changes for 'projectname.Android'

Uruchamiałem ponownie projekt, kombinowałem z SDK do Androida, zrobiłem repair VS, instalowałem na nowo Xamarina 3 razy.
Pisałem na forum Xamarin:
Fresh project - a lot of errors

Od poniedziałku musiałbym zacząć pisać. Ktoś, coś. Halp człowieki!

0

Odpal Android SDK Manager i zainstaluj wszystkie aktualizacje (automatycznie zaznaczone).
Spróbuj Update-Package –reinstall. Jeżeli nie pójdzie, pokaż pełny komunikat błędu (pewnie będzie, że nie są kompatybilne z monoandroid, wtedy to problem z SDK).

0

Zasadnicze pytanie jest po co męczyć się z tą kupą, jeśli masz napisać aplikację tylko na Androida.

0

@Biały Lew1:
Bo nie mam czasu na naukę Java/Kotlin. Znam C#, znam XAML, mam narzędzia to z nich korzystam. I nie przemawia do mnie argument typu: "Przecież Java jest podobna do C#..."

@Ktos
Akualizacje w SDK Manager zainstalowane
Update-Package -reinstall zwraca:

Update-Package : Package Xamarin.Android.Support.Design 26.1.0.1 is not compatible with monoandroid71 (MonoAndroid,Version=v7.1). Package Xamarin.Android.Support.Design 26.1.0.1 supports: monoandroid80 (MonoAndroid,Vers
ion=v8.0)
At line:1 char:1
+ Update-Package –reinstall
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Update-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
 
Update-Package : Package Xamarin.Android.Support.v7.AppCompat 26.1.0.1 is not compatible with monoandroid71 (MonoAndroid,Version=v7.1). Package Xamarin.Android.Support.v7.AppCompat 26.1.0.1 supports: monoandroid80 (Mono
Android,Version=v8.0)
At line:1 char:1
+ Update-Package –reinstall
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Update-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
 
Update-Package : Package Xamarin.Android.Support.v4 26.1.0.1 is not compatible with monoandroid71 (MonoAndroid,Version=v7.1). Package Xamarin.Android.Support.v4 26.1.0.1 supports: monoandroid80 (MonoAndroid,Version=v8.0
)
At line:1 char:1
+ Update-Package –reinstall
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Update-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
 
Update-Package : Package Xamarin.Android.Support.v7.CardView 26.1.0.1 is not compatible with monoandroid71 (MonoAndroid,Version=v7.1). Package Xamarin.Android.Support.v7.CardView 26.1.0.1 supports: monoandroid80 (MonoAn
droid,Version=v8.0)
At line:1 char:1
+ Update-Package –reinstall
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Update-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
 
Update-Package : Package Xamarin.Android.Support.v7.MediaRouter 26.1.0.1 is not compatible with monoandroid71 (MonoAndroid,Version=v7.1). Package Xamarin.Android.Support.v7.MediaRouter 26.1.0.1 supports: monoandroid80 (
MonoAndroid,Version=v8.0)
At line:1 char:1
+ Update-Package –reinstall
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Update-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
 
Update-Package : Package restore failed. Rolling back package changes for 'AndroidXL.Android'.
At line:1 char:1
+ Update-Package –reinstall
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Update-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
 
0

Jak wolisz, ale nauka Javy lub Kotlina zajęłaby ci mniej niż rozwiązanie tego problemu i wielu innych, które będziesz ciągle napotykać. Xamarin to nie jest dobry produkt.

0

Próbowałem i 3 godziny się męczyłem żeby zrobić głupie zapytanie do mojego API. Jestem już przyzwyczajony do C# i .NET. Java oferuje kompletnie inne podejście do tematu - inna struktura, inna składnia kotlina, adaptery do ListView

0

Zmień TargetFramework (Properties twojego projektu) na wersję 8.0. Obecnie próbuje ci instalować paczki w wersji 26.x.x, a one są dla wersji API26 Androida (czyli Android 8.0), a masz ustawiony Target na wersję 8.0.

Powinno też zadziałać, jeśli doinstalujesz w SDK Manager SDK dla wersji 7.0/7.1 Androida.

0

Zadziałało w połowie. Nie mam błędów, aplikacja się uruchamia i działa poprawnie ale nie mogę dodawać nowych stron. Albo wali błędem o treści System.Exception occured albo dodając tworzy się tylko plik .cs, w którym nie istnieje InitializeComponent(), rebuild nie pomaga... Obawiam się, że będę musiał faktycznie przerzucić się na Kotlina i kolega wyżej miał racje w kwestii co będzie szybciej... Ma Ktos jeszcze jakieś pomysły?

0

To jest błąd w Xamarinie, który jest oficjalnie "under investigation". Podobno pomaga doinstalowanie obsługi UWP - być może to prawda, bo takiej sytuacji nie miałem nigdy, ale workflow do UWP mam zainstalowany: https://developercommunity.visualstudio.com/content/problem/160939/bug-adding-xaml-content-page-to-shared-project-xam.html

Fakt faktem, o ile podoba mi się Xamarin (bo jestem fanem C# i XAML-a), o tyle jest koszmarnie niedopracowany i wychodzą dziwaczne bugi. Nie wiem co prawda czy denerwuje mnie na tyle, abym się dał przekonać do Javy.

0

Zainstalowałem znowu Android Studio ale przekonałeś mnie by walczyć dalej o swoje. Instaluje się UWP. Zobaczymy...

#edit
Działa! :D oby jak najdłużej. Dzięki za pomoc.

0

Nuuudaa... ciekawe ile jeszcze bugów ci trzeba, widziałem to już wiele razy. Pewnie jak zwykle przeważy sypanie się apki, wkurwieni użytkownicy, a ty nie będziesz wiedział co zrobić, bo znów "bug w Xamarinie"

Pamiętaj tylko, że im dalej zabrniesz, tym więcej będziesz musiał robić od początku w Android Studio.

0

Jesteście jak diabełek z aniołkiem. Toczę walkę pomiędzy pewnością działania, a wygodą tworzenia.

0

@AdamWox: DataBinding + Architecture Components nie odbiega wcale tak bardzo od C# i Xaml. Podobnie bindujesz kontrolki, wsparcie dla mvvm itd. Warto się zapoznać: https://developer.android.com/topic/libraries/architecture/index.html

0

Fajny bajer mi tutaj podrzuciłeś, może się przydać ale mój projekt będzie pobierał dane z mojego Web API. Mogę ewentualnie zapisywać dane autoryzacyjne do API ale chyba całej bazy danych nie będę potrzebował do dwóch słów - login i hasło.

PS.
Przekonałeś mnie, łoje to cholerstwo w Android Studio. Próbowałem się dostosować do Kotlina ale jest masakryczny, jadę na Javie ;)

0

Nie tylko Room (sqlite), przejrzyj sobie sample na Githubie: https://github.com/googlesamples/android-architecture-components

Zwróć uwagę na ViewModels i Rxjava a najlepiej wszystko sobie przejrzyj.

0

Oby tylko te web api to nie był SOAP ;) Jeśli to rest, to sprawa banalna - Retrofit i RxJava

0

Web API mam w C#. Do API po stronie Androida używam Volley

0

Volley tez spoko, chociaż moim zdaniem Retrofit prostszy i mniej trzeba kodu napisać, żeby go użyć.

0

retrofit + okhttp i jakis "RxC#" :)

0

Wystarcza Retrofit + Rxjava

1 użytkowników online, w tym zalogowanych: 0, gości: 1