Xamarin & Visual Studio, Windows Phone & ASP.NET: Ist eine echte einzelne Klassenbibliothek möglich?

8

Ich habe derzeit eine Serviceschicht und API erstellt, die ich von einer ASP.NET-Website, einer Windows Phone-App und einer Windows 8-Metro-App verwende - der Schlüssel für alle, die ein Projekt mit Modellklassen sind ein tragbares Klassenbibliotheksprojekt und wird als Referenz zwischen allen geteilt. Diese Architektur funktioniert einwandfrei und ohne Probleme.

Ich experimentiere jedoch seit kurzem mit Xamarin - speziell mit der iOS-Funktionalität (um später auf Android umzusteigen). Meine anfängliche Annahme war, dass ich diese Modellbibliothek genauso nutzen könnte wie die anderen Projekte - allerdings habe ich inzwischen erkannt, dass dies nicht der Fall ist.

Als ich meinem Xamarin.iOS-Projekt (in Visual Studio) zum ersten Mal einen Verweis auf meine Modellklassenbibliothek hinzugefügt habe, wurde ich von folgendem Fehler begrüßt:

'Das aktuelle Projekt unterstützt keine Referenzen auf Portable Library-Projekte'.

Seltsam - weil ich dachte, dies wäre ein Szenario, das unterstützt würde. Ich habe einen Post hier gefunden, der eine Korrektur vorgeschlagen hat, die Visual gezwungen hat Studio zur Erkennung des Monotouch (Xamarin) Frameworks zur Unterstützung von Portable Library Projects. Schien genau das zu sein, was ich brauchte - aber nein. Als ich den Verweis erneut hinzufügte, wurde ich von einem anderen Fehler begrüßt:

Der Zielrahmen des aktuellen Projekts ist nicht mit dem des Portable Library-Projekts kompatibel.

Und es schlägt vor, dass ich das Zielframework in den Projekteigenschaften ändere. Außer ich kann das nicht, da das Xamarin iOS Projekt Monotouch unterstützen muss (und ich kann es sowieso nicht von der GUI auf irgendwas anderes ändern). Also habe ich versucht, die Eigenschaften der Modellbibliothek zu ändern - vielleicht kann ich da etwas tun. Und es sah so aus als könnte ich es. Ich kann Monotouch (Xamarin) als eine unterstützte Plattform hier überprüfen (wo Windows-Telefon, Windows-Speicher, usw. bereits überprüft werden), aber es lässt mich nicht speichern. Es zeigt nur die Nachricht:

'Es gibt keine zusätzliche Funktionalität, die von den ausgewählten Zielframeworks unterstützt wird'

Nach einigem Nachforschen stellte ich fest, dass Xamarin nur den Austausch von Code vorschlägt, indem man separate Projekte mit verknüpften Code-Dateien verwendet (also quasi eine Pseudo-Single-Code-Basis), die ich ausprobiert und bearbeitet habe hack. Siehe hier:

Ссылка

Also ist das die einzige Option? Oder gibt es eine Möglichkeit, eine true einzelne Klassenbibliothek (Modellbibliothek) auf allen Plattformen zu haben, einschließlich Microsoft und Xamarin?

    
stevehayter 07.04.2013, 21:31
quelle

2 Antworten

1

Es ist derzeit möglich, Portable Library Projects zu verwenden - z.B. Profil 104 - über alle .Net4.5, WP, WinRT, Xamarin.Android und Xamarin.iOS

Derzeit ist es auch möglich, die binären Ausgabebaugruppen über .Net4.5, WP, WinRT und Xamarin.Android zu verwenden - aber nicht gegen Xamarin.iOS.

Diese Situation ändert sich "sehr bald", da Xamarin die volle PCL-Unterstützung übernimmt - siehe Ссылка und hören Ссылка

Ich persönlich übergebe MvvmCross (und viele Apps, die MvvmCross verwenden) mit PCLs - und habe das in den letzten sechs Monaten getan -, aber es gibt momentan einige Schwierigkeiten bei der Einrichtung. Für einige Infos siehe mein Blog:

Ich hoffe, in naher Zukunft ein Update dazu zu geben - es sollte bald "out of the box" funktionieren.

    
Stuart 08.04.2013 15:13
quelle
0

Die Zukunft ist auf der Xamarin-Seite vielversprechend, da sie das .NET 4.5-Profil auf all ihren Plattformen unterstützen wird,

Ссылка

Das einzige Problem, soweit ich das sehen kann, kommt von der Microsoft-Seite, die sich weigert, ihre eigenen Plattformen zu einem gemeinsamen Profil zu vereinheitlichen (Windows 8 und Windows Phone 8 sind immer noch unordentlich zugeschnittene Versionen, nicht besser als CF oder Silverlight in meiner eigenen Situation) ).

Portable Klassenbibliotheken sind da draußen, aber als Bibliotheksautor ( #SNMP ) erstelle ich lieber separate Projektdateien für meine eigenen Projekte als Xamarin schlägt vor.

    
Lex Li 08.04.2013 02:37
quelle