.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv Dezember 2015

Cross Plattform App Entwicklung mit Visual Studio 2015 Webinar: Antworten zu den Fragen (Teil 2)

23.12.2015 09:34:00 | Andre Kraemer

In diesem Beitrag möchte ich die nächsten Fragen meines Developer Media Webinars zur Cross Plattform App Entwicklung in Visual Studio 2015 mit Xamarin und Cordova beantworten. Die Antworten des ersten Teils können hier nachgelesen werden. Wer nicht am Webinar teilnehmen konnte, kann sich die Aufzeichnung übrigens kostenlos bei Developer Media ansehen.

F: Wie kann unter Xamarin die Ländereinstellung (CurrentThread.Culture) verändert werden?

A:  Ich vermute, dass sich die Frage darauf bezieht, dass in meinen Apps die Währungen in $ dargestellt wurden. Dies lag daran, dass mein iOS Simulator und auch mein Android Emulator auf englisch eingestellt waren (EN_US). Ich hätte lediglich in den Einstellungen des Simulators die Ländereinstellungen ändern müssen, dann hätte ich auch das Euro-Zeichen gesehen. Standardmäßig wird also immer die aktuelle Ländereinstellung des Geräts berücksichtigt.

Wie man eine bestimmte Ländereinstellung in seiner App erzwingt, ist in diesem StackOverflow Post beschrieben.

F: Worin genau liegt der Mehrwert von Xamarin, außer, dass es eine vereinheitlichte Sprache ist? Das Layout etc. scheint man ja doch separat machen zu müssen. Das kann man notfalls auch durch einen einfachen Java-to-Whatever compiler erreichen. Ist zwar nicht schön, aber für so viel gespartes Geld kann man darüber hinwegsehen, oder?

A: In den ersten Versionen von Xamarin lagt der Mehrwert tatsächlich darin C# und die .NET Klassenbibliothek plattformübergreifend nutzen zu können. Das Layout musste tatsächlich separat entwickelt werden. Bereits dies sehe ich als großen Mehrwert an, da ich so als .NET Entwickler auf mein bestehendes Wissen bezüglich der .NET Klassenbibliothek zurück greifen kann. Seit Mitte 2014 liefert Xamarin mit Xamarin.Forms nun jedoch auch eine Abstraktionsschicht über die Benutzeroberfläche, die es ermöglicht den Oberflächencode plattformübergreifend zu nutzen.

F: Was hat es nochmal mit dem VB Code auf sich, was anfangs erwähnt wurde?

Xamarin unterstützt zwar zur Entwicklung nur C#, Bibliotheken können jedoch auch in einer anderen .NET Sprache, z. B. VB.NET, geschrieben werden. Wer also VB.NET mit Xamarin nutzen möchte, der legt sich einfach eine VB.NET Portable Class Library an. In dieser kann fast der gesamte Applikationscode enthalten sein. Die eigentlichen Xamarin Projekte enthalten dann nur noch Aufrufe an die PCL. Xamarin beschreibt diese Vorgehensweise hier. Darüber hinaus gibt es auch eine VB.NET Beispielanwendung.

F: Wie erhält (konfiguriert) man den "schnellen" Emulator für Android? Mein Emulator benötigt mehrere Minuten für den Start!

A: Das stimmt, der Standard Android Emulator ist gähnend langsam. Zumindest wenn man ein ARM Image bootet. Schneller geht es, wenn man im AVD Manager des Android SDK einen X86 basierten Emulator anlegt. Der im Webinar gezeigte Emulator ist der Microsoft Visual Studio-Emulator für Android. Anders als der Namen vermuten lässt, funktioniert dieser übrigens auch ohne Visual Studio. Er kann hier kostenfrei herunter geladen werden. Der Emulator basiert auf Hyper-V, bedeutet er kann erst ab Windows 8.1 oder höher genutzt werden. Alternativ können auch die Intel HAXM Treiber genutzt werden. Diese können auch unter Windows 7 eingesetzt werden und beschleunigen den Start eines X86 basierten Android Emulators merklich. Eine Anleitung dazu gibt es direkt bei Intel. Xamarin liefert übrigens auch einen eigenen Android Emulator, den Android Player. Auch dieser startet sehr schnell, ist allerdings aktuell noch in der Preview Phase. Eine weitere Option wäre der kostenpflichtige Emulator von Genymotion.

F: Kann man Xamarin-Forms auch auf dem Mac in Xamarin-Studio einsetzten?

A: Xamarin.Forms kann sowohl auf dem Mac in Xamarin Studio, als auch unter Windows in Visual Studio (oder Xamarin Studio) genutzt werden. Voraussetzung für die Visual Studio Integration ist jedoch eine Starter, Business oder Enterprise Lizenz. In der Indie Edition kann Xamarin.Forms zum derzeitigen Stand nicht genutzt werden. In Xamarin Studio kann es in allen Lizenzvarianten genutzt werden, also auch in der Indie Edition.

F: Wie kann man die App auf ein IOS-Gerät deployen? Ich meinte eigentlich, wie man die APP auf viele Geräte deployed?

A: Xamarin Apps können nach der Paketierung über iTunes Connect in den Apple App Store geladen werden. Dazu ist jedoch ein Apple Entwickler Account notwendig. Außerdem kann die App auch im Unternehmen über einen Enterprise Store verteilt werden, hierzu ist dann eine Mitgliedschaft im Apple Developer Enterprise Program notwendig. Die letzte Version wäre die "Ad Hoc" Verteilung auf bis zu 100 Geräte. Dies wird in der Regel zum Test genutzt. Nähere Infos zu den Optionen gibt es bei Xamarin und Apple. Informationen, wie man Xcode zum Verteilen von Zertifikaten zum Debugging auf einem iPhone / iPad nutzt, gibt es hier.

F: Kann man über Cordova auch SQLite-Datenbanken nutzen? Vermutlich über die Plugins?

A: Das stimmt. Über ein Plugin kann SQLite auch in Cordova genutzt werden. Ein Beispiel für die Nutzung von SQLite in Ionic gibt es hier. Auf Github findet man außerdem den Quellcode eines Plugins.

F: Vor-/Nachteile im Vergleich zwischen Xamarin und Cordova?

A:  Wie bereits im ersten Teil des Posts beschrieben lässt sich diese Frage nicht so pauschal beantworten. Was für den einen ein Vorteil ist, kann für den anderen ein Nachteil sein. So entsprechend Xamarin UIs durch die Nutzung der nativen SDKs in der Regel den UI Anforderungen der jeweiligen Betriebssysteme und sehen somit auf jedem Betriebssystem etwas anders aus. Cordova Anwendungen sehen jedoch meist auf allen Betriebssystemen gleich aus. Ein zu 100 % natives UI kann von Vorteil sein, wenn man eine App für Consumer oder externe Partner schreibt deren Geräte man nicht unter der eigenen Hoheit hat. Diese erwarten in der Regel, dass sich eine App genauso verhält und sie genauso aussieht wie alle anderen Apps auf ihrem Mobilgerät. Schreibt man jedoch eine In-House App für mehrere 100 Mitarbeiter, dann kann der Cordova Ansatz von Vorteil sein. Sieht die Oberfläche nämlich überall gleich aus, dann reduziert dies nicht nur Dokumentations- sondern auch Schulungsaufwände. Schließlich kann hier für alle Betriebssysteme dieselbe Dokumentation / Schulungsunterlage genutzt werden. Ähnlich sieht es mit anderen Kriterien aus. Deshalb sollte immer eine konkrete Entscheidung je App getroffen werden.

Mit der Ermittlung und Bewertung verschiedener Kriterien habe ich mich in den letzten Monaten sehr intensiv beschäftigt. Das Ergebnis ist Kriterienkatalog und eine darauf aufbauende Bewertungsmethode, die eine belastbare und nachvollziehbare Entscheidungsfindung für eine der Alternativen ermöglicht. Details über die Veröffentlichung des dahinter stehenden Models werde ich Anfang nächsten Jahres über meinen Newsletter bekannt geben. Also am besten gleich hier unten auf andrekraemer.de  am Seitenfuß zum Newsletter anmelden.

Cross Plattform App Entwicklung mit Visual Studio 2015 Webinar: Antworten zu den Fragen (Teil 2)

23.12.2015 09:34:00 | Andre Kraemer

In diesem Beitrag möchte ich die nächsten Fragen meines Developer Media Webinars zur Cross Plattform App Entwicklung in Visual Studio 2015 mit Xamarin und Cordova beantworten. Die Antworten des ersten Teils können hier nachgelesen werden. Wer nicht am Webinar teilnehmen konnte, kann sich die Aufzeichnung übrigens kostenlos bei Developer Media ansehen.

F: Wie kann unter Xamarin die Ländereinstellung (CurrentThread.Culture) verändert werden?

A:  Ich vermute, dass sich die Frage darauf bezieht, dass in meinen Apps die Währungen in $ dargestellt wurden. Dies lag daran, dass mein iOS Simulator und auch mein Android Emulator auf englisch eingestellt waren (EN_US). Ich hätte lediglich in den Einstellungen des Simulators die Ländereinstellungen ändern müssen, dann hätte ich auch das Euro-Zeichen gesehen. Standardmäßig wird also immer die aktuelle Ländereinstellung des Geräts berücksichtigt.

Wie man eine bestimmte Ländereinstellung in seiner App erzwingt, ist in diesem StackOverflow Post beschrieben.

F: Worin genau liegt der Mehrwert von Xamarin, außer, dass es eine vereinheitlichte Sprache ist? Das Layout etc. scheint man ja doch separat machen zu müssen. Das kann man notfalls auch durch einen einfachen Java-to-Whatever compiler erreichen. Ist zwar nicht schön, aber für so viel gespartes Geld kann man darüber hinwegsehen, oder?

A: In den ersten Versionen von Xamarin lagt der Mehrwert tatsächlich darin C# und die .NET Klassenbibliothek plattformübergreifend nutzen zu können. Das Layout musste tatsächlich separat entwickelt werden. Bereits dies sehe ich als großen Mehrwert an, da ich so als .NET Entwickler auf mein bestehendes Wissen bezüglich der .NET Klassenbibliothek zurück greifen kann. Seit Mitte 2014 liefert Xamarin mit Xamarin.Forms nun jedoch auch eine Abstraktionsschicht über die Benutzeroberfläche, die es ermöglicht den Oberflächencode plattformübergreifend zu nutzen.

F: Was hat es nochmal mit dem VB Code auf sich, was anfangs erwähnt wurde?

Xamarin unterstützt zwar zur Entwicklung nur C#, Bibliotheken können jedoch auch in einer anderen .NET Sprache, z. B. VB.NET, geschrieben werden. Wer also VB.NET mit Xamarin nutzen möchte, der legt sich einfach eine VB.NET Portable Class Library an. In dieser kann fast der gesamte Applikationscode enthalten sein. Die eigentlichen Xamarin Projekte enthalten dann nur noch Aufrufe an die PCL. Xamarin beschreibt diese Vorgehensweise hier. Darüber hinaus gibt es auch eine VB.NET Beispielanwendung.

F: Wie erhält (konfiguriert) man den “schnellen” Emulator für Android? Mein Emulator benötigt mehrere Minuten für den Start!

A: Das stimmt, der Standard Android Emulator ist gähnend langsam. Zumindest wenn man ein ARM Image bootet. Schneller geht es, wenn man im AVD Manager des Android SDK einen X86 basierten Emulator anlegt. Der im Webinar gezeigte Emulator ist der Microsoft Visual Studio-Emulator für Android. Anders als der Namen vermuten lässt, funktioniert dieser übrigens auch ohne Visual Studio. Er kann hier kostenfrei herunter geladen werden. Der Emulator basiert auf Hyper-V, bedeutet er kann erst ab Windows 8.1 oder höher genutzt werden. Alternativ können auch die Intel HAXM Treiber genutzt werden. Diese können auch unter Windows 7 eingesetzt werden und beschleunigen den Start eines X86 basierten Android Emulators merklich. Eine Anleitung dazu gibt es direkt bei Intel. Xamarin liefert übrigens auch einen eigenen Android Emulator, den Android Player. Auch dieser startet sehr schnell, ist allerdings aktuell noch in der Preview Phase. Eine weitere Option wäre der kostenpflichtige Emulator von Genymotion.

F: Kann man Xamarin-Forms auch auf dem Mac in Xamarin-Studio einsetzten?

A: Xamarin.Forms kann sowohl auf dem Mac in Xamarin Studio, als auch unter Windows in Visual Studio (oder Xamarin Studio) genutzt werden. Voraussetzung für die Visual Studio Integration ist jedoch eine Starter, Business oder Enterprise Lizenz. In der Indie Edition kann Xamarin.Forms zum derzeitigen Stand nicht genutzt werden. In Xamarin Studio kann es in allen Lizenzvarianten genutzt werden, also auch in der Indie Edition.

F: Wie kann man die App auf ein IOS-Gerät deployen? Ich meinte eigentlich, wie man die APP auf viele Geräte deployed?

A: Xamarin Apps können nach der Paketierung über iTunes Connect in den Apple App Store geladen werden. Dazu ist jedoch ein Apple Entwickler Account notwendig. Außerdem kann die App auch im Unternehmen über einen Enterprise Store verteilt werden, hierzu ist dann eine Mitgliedschaft im Apple Developer Enterprise Program notwendig. Die letzte Version wäre die “Ad Hoc” Verteilung auf bis zu 100 Geräte. Dies wird in der Regel zum Test genutzt. Nähere Infos zu den Optionen gibt es bei Xamarin und Apple. Informationen, wie man Xcode zum Verteilen von Zertifikaten zum Debugging auf einem iPhone / iPad nutzt, gibt es hier.

F: Kann man über Cordova auch SQLite-Datenbanken nutzen? Vermutlich über die Plugins?

A: Das stimmt. Über ein Plugin kann SQLite auch in Cordova genutzt werden. Ein Beispiel für die Nutzung von SQLite in Ionic gibt es hier. Auf Github findet man außerdem den Quellcode eines Plugins.

F: Vor-/Nachteile im Vergleich zwischen Xamarin und Cordova?

A:  Wie bereits im ersten Teil des Posts beschrieben lässt sich diese Frage nicht so pauschal beantworten. Was für den einen ein Vorteil ist, kann für den anderen ein Nachteil sein. So entsprechend Xamarin UIs durch die Nutzung der nativen SDKs in der Regel den UI Anforderungen der jeweiligen Betriebssysteme und sehen somit auf jedem Betriebssystem etwas anders aus. Cordova Anwendungen sehen jedoch meist auf allen Betriebssystemen gleich aus. Ein zu 100 % natives UI kann von Vorteil sein, wenn man eine App für Consumer oder externe Partner schreibt deren Geräte man nicht unter der eigenen Hoheit hat. Diese erwarten in der Regel, dass sich eine App genauso verhält und sie genauso aussieht wie alle anderen Apps auf ihrem Mobilgerät. Schreibt man jedoch eine In-House App für mehrere 100 Mitarbeiter, dann kann der Cordova Ansatz von Vorteil sein. Sieht die Oberfläche nämlich überall gleich aus, dann reduziert dies nicht nur Dokumentations- sondern auch Schulungsaufwände. Schließlich kann hier für alle Betriebssysteme dieselbe Dokumentation / Schulungsunterlage genutzt werden. Ähnlich sieht es mit anderen Kriterien aus. Deshalb sollte immer eine konkrete Entscheidung je App getroffen werden.

Mit der Ermittlung und Bewertung verschiedener Kriterien habe ich mich in den letzten Monaten sehr intensiv beschäftigt. Das Ergebnis ist Kriterienkatalog und eine darauf aufbauende Bewertungsmethode, die eine belastbare und nachvollziehbare Entscheidungsfindung für eine der Alternativen ermöglicht. Details über die Veröffentlichung des dahinter stehenden Models werde ich Anfang nächsten Jahres über meinen Newsletter bekannt geben. Also am besten gleich hier unten auf andrekraemer.de  am Seitenfuß zum Newsletter anmelden.

Do Great Things: Microsoft Lumia sucht die innovativsten Gründer Deutschlands

22.12.2015 10:52:53 | Mathias Gronau

Unter dem Motto „Do Great Things“ sucht Microsoft Deutschland bis zum 31. Januar 2016 Gründer mit innovativen Ideen und Geschäftsmodellen. Die drei besten Ideen prämiert Microsoft mit jeweils 10.000 Euro Startkapital und dem neuen Windows 10 Smartphone Lumia 950. Außerdem erhalten die Gewinner im Rahmen eines Workshops bei Microsoft Berlin ein Coaching mit dem Startup-Experten Frank Thelen („Die Höhle der Löwen“), der mit seinen Produkten mehr als 100 Millionen Menschen in über 60 Ländern erreicht. „Deutschland ist das Land der Ideen“, sagt Sebastian Ulrich, Leiter Geschäftsbereich MMDS, Microsoft Deutschland. „Wir brauchen diese Ideen, um ein Digitales Wirtschaftswunder möglich zu machen. Und Startups brauchen moderne Technologien, professionelles Know-how und Startkapital, um mit ihren Ideen ein erfolgreiches Business zu starten. So kommen wir bei Do Great Things zusammen.“ Startups auf dem Weg zum Erfolg können sich online bis zum 31. Januar 2016 mit einer kurzen Präsentation sowie einem Elevator Pitch-Video bewerben. Microsoft wählt anschließend gemeinsam mit Frank Thelen unter allen Einsendungen die spannendsten und vielversprechendsten Ideen aus. Über den Lumia Blog wird Microsoft den Wettbewerb zudem kontinuierlich medial begleiten. Bereits 2015 hat Microsoft unter dem Motto #MakeItHappen einen ähnlichen Wettbewerb durchgeführt. Zu den Preisträgern gehörte unter anderem das Mannheimer Unternehmen Kuchen im Glas. „Wir standen damals gerade vor wichtigen strategischen Entscheidungen“, erinnert sich Alexandra Bald, Co-Founder und Art-Director bei Kuchen im Glas. „Daher waren wir auf den Austausch mit anderen GründerInnen und die Beratung während der Workshops in Berlin sehr gespannt. Besonders der persönliche Input von Frank Thelen hat uns bei unseren Plänen sehr bestärkt und motiviert. Es hat gewirkt: Mit unserem Team haben wir gerade das Weihnachtsgeschäft 2015 erfolgreich hinter uns gebracht und freuen uns, nächstes Jahr unsere Pläne – besonders in punkto Individualisierung unserer Kuchengeschenke – verwirklichen zu können.“

Cross Plattform App Entwicklung mit Visual Studio 2015 Webinar: Antworten zu den Fragen (Teil 1)

22.12.2015 08:00:00 | Andre Kraemer

imageWährend meines Developer Media Webinars zur Cross Plattform App Entwicklung in Visual Studio 2015 mit Xamarin und Cordova sind leider einige Fragen aufgrund der knappen Zeit unbeantwortet geblieben.

Wie versprochen werde ich diese Fragen jedoch in den nächsten Tagen in mehreren Blog Beiträgen beantworten.

Den Anfang macht dieser Blog Beitrag.

In den nächsten Tagen werden zwei bis drei weitere Beiträge folgenden, in denen ich die weiteren Fragen beantworten werde. (Link zu Teil 2)

Wer nicht am Webinar teilnehmen konnte, kann sich die Aufzeichnung übrigens kostenlos bei Developer Media ansehen.

 

F: Gibt es den iOS-Simulator auch für Windows, oder muss man dann immer zum Mac-Rechner laufen?

A: Apple stellt den iOS-Simulator nur für OS X zur Verfügung. Zum Mac-Rechner muss man allerdings trotzdem nicht laufen. OS X verfügt über eine eingebaute Funktion zur Bildschirmübertragung. Dabei handelt es sich um einen erweiterten VNC Server. Somit kann der Mac und damit auch der iOS Simulator über einen VNC Client bequem vom Windows Rechner aus ferngesteuert werden.

image

Der ferngesteuerte Mac kann übrigens auch in der Cloud betrieben werden: http://www.macincloud.com/

F: Brauche ich Zugriff auf die Mac Oberfläche um den iOS Simulator zu nutzen?

Ja, aber wie bereits in der vorherigen Frage beschrieben, kann der Zugriff auch über VNC oder ähnliches erfolgen.

F: Ist für die App-Erstellung ein Apple- und Android-System zwingend erforderlich?

Theoretisch kann die Entwicklung vollständig mit dem iOS Simulator bzw. Android Emulator durchgeführt werden. In der Praxis ist es jedoch hilfreich die App zusätzlich auf einem echten Gerät zu testen. Gerade im iOS Umfeld kann der Simulator falsche Performance Erwartungen wecken. Eine weitere Alternative ist die Xamarin Test Cloud. Hier können Apps auf über 2000 echten Geräten in der Cloud getestet werden.

F: Gibt es mittlerweile einen Xamarin.Forms Designer ?

A:  Leider noch nicht. Stand Dezember 2015 muss der XAML Code vollständig von Hand geschrieben werden (siehe auch https://developer.xamarin.com/guides/cross-platform/xamarin-forms/user-interface/xaml-basics/)

F: Kann man in Xamarin Layout über Code erstellen? Stichwort: Data-driven bzw. Shared Layout (zumindest in Teilen)

A: Benutzeroberflächen können unter Xamarin sowohl für Android, als auch für iOS direkt im Quellcode erstellt werden. Siehe dazu: Dynamische Oberflächen unter iOS und Dynamische Oberflächen unter Android. Gleiches gilt auch für Xamarin.Forms: Dynamische Oberflächen unter Xamarin.Forms

F: Kann man in Visual Studio auch direkt Obj-c oder Swift-Code schreiben in einem iOS-Projekt?

Ab Visual Studio 2015 Update 1 verfügt VS zumindest über IntelliSense für Swift. Somit ist ein komfortables editieren von Swift Quelltexten möglich. Weitere Funktionen, wie zum Beispiel die Übersetzung von Swift Quellcode gibt es jedoch noch nicht.

F: Wie sync SQLITe <--> SQL Server?

A: Die Synchronisation von offline Daten mit einem zentralen Server ist keine triviale Aufgabe. Eine mögliche Lösungsvariante wäre es die Synchronisation vollständig selbst umzusetzen. Dies ist jedoch komplizierter als man zunächst glauben mag.

Eine kommerzielle Lösung für dieses Problem ist Zumero for SQL Server. Selbst habe ich Zumero noch nicht eingesetzt, daher kann ich auch keine Aussage darüber treffen, wie gut das Produkt funktioniert.

Darüber hinaus gib es auch eine Lösung mit Azure Mobile Services.

F: Unterstützt Xamarin eigentlich nicht Windows Phone?

A: Die Kernidee der Xamarin Platform besteht darin, C# und die .NET Klassenbibliothek zur Entwicklung von Android und iOS App nutzen zu können. Eine Implementierung für Windows Phone von C# und der .NET Klassenbibliothek gibt es bereits von Microsoft. Daher ist eine Windows Phone Unterstützung seitens Xamarin erst einmal nicht notwendig. Zumindest so lange das UI vollständig nativ entwickelt wird. Spätestens wenn die Abstraktionsschicht Xamarin.Forms ins Spiel kommt, macht eine Windows Phone Unterstützung seitens Xamarin natürlich schon Sinn. Daher gibt es für Xamarin.Forms tatsächlich eine Unterstützung für Windows Phone 8.1, Windows 8.1 und Windows 10 Universal Apps.

Cordova vs. nativ mit Xamarin?

Diese Frage lässt sich seriös leider nicht in zwei Sätzen beantworten. Stattdessen müsste man anhand eines individuellen Kriterienkatalogs beide Ansätze miteinander vergleichen und dann im Einzelfall für die eine oder andere Technologie entscheiden.

Genau mit dieser Fragestellung nativ vs. Cordova vs. nativ mit Xamarin habe ich mich jedoch in den letzten Monaten sehr intensiv beschäftigt. Das Ergebnis ist eine Bewertungsmethode, die eine belastbare und nachvollziehbare Entscheidungsfindung für eine der Alternativen ermöglicht. Details über die Veröffentlichung des dahinter stehenden Models werde ich Anfang nächsten Jahres über meinen Newsletter bekannt geben. Also am besten gleich hier unten am Seitenfuß zum Newsletter anmelden.

Cross Plattform App Entwicklung mit Visual Studio 2015 Webinar: Antworten zu den Fragen (Teil 1)

22.12.2015 08:00:00 | Andre Kraemer

imageWährend meines Developer Media Webinars zur Cross Plattform App Entwicklung in Visual Studio 2015 mit Xamarin und Cordova sind leider einige Fragen aufgrund der knappen Zeit unbeantwortet geblieben.

Wie versprochen werde ich diese Fragen jedoch in den nächsten Tagen in mehreren Blog Beiträgen beantworten.

Den Anfang macht dieser Blog Beitrag.

In den nächsten Tagen werden zwei bis drei weitere Beiträge folgenden, in denen ich die weiteren Fragen beantworten werde. (Link zu Teil 2)

Wer nicht am Webinar teilnehmen konnte, kann sich die Aufzeichnung übrigens kostenlos bei Developer Media ansehen.

F: Gibt es den iOS-Simulator auch für Windows, oder muss man dann immer zum Mac-Rechner laufen?

A: Apple stellt den iOS-Simulator nur für OS X zur Verfügung. Zum Mac-Rechner muss man allerdings trotzdem nicht laufen. OS X verfügt über eine eingebaute Funktion zur Bildschirmübertragung. Dabei handelt es sich um einen erweiterten VNC Server. Somit kann der Mac und damit auch der iOS Simulator über einen VNC Client bequem vom Windows Rechner aus ferngesteuert werden.

image

Der ferngesteuerte Mac kann übrigens auch in der Cloud betrieben werden: http://www.macincloud.com/

F: Brauche ich Zugriff auf die Mac Oberfläche um den iOS Simulator zu nutzen?

Ja, aber wie bereits in der vorherigen Frage beschrieben, kann der Zugriff auch über VNC oder ähnliches erfolgen.

F: Ist für die App-Erstellung ein Apple- und Android-System zwingend erforderlich?

Theoretisch kann die Entwicklung vollständig mit dem iOS Simulator bzw. Android Emulator durchgeführt werden. In der Praxis ist es jedoch hilfreich die App zusätzlich auf einem echten Gerät zu testen. Gerade im iOS Umfeld kann der Simulator falsche Performance Erwartungen wecken. Eine weitere Alternative ist die Xamarin Test Cloud. Hier können Apps auf über 2000 echten Geräten in der Cloud getestet werden.

F: Gibt es mittlerweile einen Xamarin.Forms Designer ?

A:  Leider noch nicht. Stand Dezember 2015 muss der XAML Code vollständig von Hand geschrieben werden (siehe auch https://developer.xamarin.com/guides/cross-platform/xamarin-forms/user-interface/xaml-basics/)

F: Kann man in Xamarin Layout über Code erstellen? Stichwort: Data-driven bzw. Shared Layout (zumindest in Teilen)

A: Benutzeroberflächen können unter Xamarin sowohl für Android, als auch für iOS direkt im Quellcode erstellt werden. Siehe dazu: Dynamische Oberflächen unter iOS und Dynamische Oberflächen unter Android. Gleiches gilt auch für Xamarin.Forms: Dynamische Oberflächen unter Xamarin.Forms

F: Kann man in Visual Studio auch direkt Obj-c oder Swift-Code schreiben in einem iOS-Projekt?

Ab Visual Studio 2015 Update 1 verfügt VS zumindest über IntelliSense für Swift. Somit ist ein komfortables editieren von Swift Quelltexten möglich. Weitere Funktionen, wie zum Beispiel die Übersetzung von Swift Quellcode gibt es jedoch noch nicht.

F: Wie sync SQLITe <–> SQL Server?

A: Die Synchronisation von offline Daten mit einem zentralen Server ist keine triviale Aufgabe. Eine mögliche Lösungsvariante wäre es die Synchronisation vollständig selbst umzusetzen. Dies ist jedoch komplizierter als man zunächst glauben mag.

Eine kommerzielle Lösung für dieses Problem ist Zumero for SQL Server. Selbst habe ich Zumero noch nicht eingesetzt, daher kann ich auch keine Aussage darüber treffen, wie gut das Produkt funktioniert.

Darüber hinaus gib es auch eine Lösung mit Azure Mobile Services.

F: Unterstützt Xamarin eigentlich nicht Windows Phone?

A: Die Kernidee der Xamarin Platform besteht darin, C# und die .NET Klassenbibliothek zur Entwicklung von Android und iOS App nutzen zu können. Eine Implementierung für Windows Phone von C# und der .NET Klassenbibliothek gibt es bereits von Microsoft. Daher ist eine Windows Phone Unterstützung seitens Xamarin erst einmal nicht notwendig. Zumindest so lange das UI vollständig nativ entwickelt wird. Spätestens wenn die Abstraktionsschicht Xamarin.Forms ins Spiel kommt, macht eine Windows Phone Unterstützung seitens Xamarin natürlich schon Sinn. Daher gibt es für Xamarin.Forms tatsächlich eine Unterstützung für Windows Phone 8.1, Windows 8.1 und Windows 10 Universal Apps.

Cordova vs. nativ mit Xamarin?

Diese Frage lässt sich seriös leider nicht in zwei Sätzen beantworten. Stattdessen müsste man anhand eines individuellen Kriterienkatalogs beide Ansätze miteinander vergleichen und dann im Einzelfall für die eine oder andere Technologie entscheiden.

Genau mit dieser Fragestellung nativ vs. Cordova vs. nativ mit Xamarin habe ich mich jedoch in den letzten Monaten sehr intensiv beschäftigt. Das Ergebnis ist eine Bewertungsmethode, die eine belastbare und nachvollziehbare Entscheidungsfindung für eine der Alternativen ermöglicht. Details über die Veröffentlichung des dahinter stehenden Models werde ich Anfang nächsten Jahres über meinen Newsletter bekannt geben. Also am besten gleich hier unten am Seitenfuß zum Newsletter anmelden.

Folien und Quellcode zum Webinar Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)

21.12.2015 09:56:56 | Andre Kraemer

Am 16. Dezember hatte ich die Freude, ein Webinar für developer media zum Thema Cross Plattform App Entwicklung mit Visual Studio 2015 zu halten. In gut zwei Stunden erläuterte ich die Herausforderungen bei der plattformübergreifenden Entwicklung und stellte anschließend die beiden Alternativen Xamarin und Cordova unter Nutzung des Ionic Frameworks vor. Die Aufzeichnung des Webinars kann hier kostenfrei herunter geladen.

Der Quellcode zum Webinar befindet sich auf github und kann dort herunter geladen werden. Die Implementierung der Cordova App ist aktuell noch nicht im Repository enthalten. Sie wird jedoch in Kürze folgen.

Falls Sie aktuell vor der Problemstellung stehen, eine App für mehrere Plattformen entwickeln zu müssen, jedoch noch unentschieden sind, ob es Xamarin, Cordova oder doch eine native App werden soll, dann sollten Sie Ende Januar einen Blick auf meine Homepage werfen. Die letzten Monate habe ich mich damit beschäftigt, ein Model zu entwickeln, welches eine transparente und belastbare Entscheidungsfindung für eine Alternative im Rahmen der Cross-Plattform-App-Entwicklung ermöglicht. Details dazu werden Ende Januar oder Anfang Februar auf meiner Website veröffentlicht. Das genaue Datum werde ich rechtzeitig über meinen Newsletter, zu dem Sie sich im Seitenfuß anmelden können, veröffentlichen.

Einen detaillierten Einblick in die Entwicklung mit Xamarin habe ich übrigens auch bei video2brain als Video-Training aufgezeichnet. Wer sich also bereits für Xamarin entschieden hat, für den lohnt sich ein Blick in meinen Xamarin Crashkurs bei video2brain. Darüber hinaus könnte auch ein Blick in mein Swift für C#-Entwickler Training lohnenswert sein.

Die Fragen, die während des Webinars gestellt wurden, werde ich übrigens ab morgen häppchenweise in mehreren Blog-Posts beantworten.

Wer zusätzliche Fragen hat, kann diese natürlich gerne über die Kommentarfunktion hier im Blog stellen.

Folien und Quellcode zum Webinar Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)

21.12.2015 09:56:56 | Andre Kraemer

Am 16. Dezember hatte ich die Freude, ein Webinar für developer media zum Thema Cross Plattform App Entwicklung mit Visual Studio 2015 zu halten. In gut zwei Stunden erläuterte ich die Herausforderungen bei der plattformübergreifenden Entwicklung und stellte anschließend die beiden Alternativen Xamarin und Cordova unter Nutzung des Ionic Frameworks vor. Die Aufzeichnung des Webinars kann hier kostenfrei herunter geladen.

Der Quellcode zum Webinar befindet sich auf github und kann dort herunter geladen werden. Die Implementierung der Cordova App ist aktuell noch nicht im Repository enthalten. Sie wird jedoch in Kürze folgen.

Falls Sie aktuell vor der Problemstellung stehen, eine App für mehrere Plattformen entwickeln zu müssen, jedoch noch unentschieden sind, ob es Xamarin, Cordova oder doch eine native App werden soll, dann sollten Sie Ende Januar einen Blick auf meine Homepage werfen. Die letzten Monate habe ich mich damit beschäftigt, ein Model zu entwickeln, welches eine transparente und belastbare Entscheidungsfindung für eine Alternative im Rahmen der Cross-Plattform-App-Entwicklung ermöglicht. Details dazu werden Ende Januar oder Anfang Februar auf meiner Website veröffentlicht. Das genaue Datum werde ich rechtzeitig über meinen Newsletter, zu dem Sie sich im Seitenfuß anmelden können, veröffentlichen.

Einen detaillierten Einblick in die Entwicklung mit Xamarin habe ich übrigens auch bei video2brain als Video-Training aufgezeichnet. Wer sich also bereits für Xamarin entschieden hat, für den lohnt sich ein Blick in meinen Xamarin Crashkurs bei video2brain. Darüber hinaus könnte auch ein Blick in mein Swift für C#-Entwickler Training lohnenswert sein.

Die Fragen, die während des Webinars gestellt wurden, werde ich übrigens ab morgen häppchenweise in mehreren Blog-Posts beantworten.

Wer zusätzliche Fragen hat, kann diese natürlich gerne über die Kommentarfunktion hier im Blog stellen.

Unit testing DNX libraries with NUnit

15.12.2015 17:00:00 | Jürgen Gutsch

For this blog post I will reuse the Visual Studio solution of the last post. I only added a new test project called "UnitTestDemo.NunitTests" which is a DNX console application.

The test runner

Nunit doesn't yet provide a DNX test runner as it is provided by Xunit, this is why we need to have a console application which can be called via the DNX command. But this is not a big deal and contains only a few lines of code and a little bit of configuration in the project.json. Lets add two new dependencies:

"dependencies": {
    "UnitTestDemo": "",
    "nunit": "3.0.0",
    "NUnitLite": "3.0.0-*",
    "FluentAssertions": "4.0.1"
},

NUntLight is a lightweight NUnit runner implementation and needs to be used to execute unit test libraries. A NUnit test project usually is a DNX console application with a program.cs inside. Let's add some lines of code to the Main method:

public class Program
{
    public static void Main(string[] args)
    {
#if DNX451
        new AutoRun().Execute(args);
#else
        new AutoRun().Execute(typeof(Program).GetTypeInfo().Assembly, Console.Out, Console.In, args);
#endif
    }
}

This method calls the Execute method of the NUnitLigts AutoRun class. If we are running on .NET Core, we need to pass in the console in and out streams and the Assembly which contains the unit tests. On .NET Framework this can be automatically resolved.

Writing test

If this is done we are able to start writing NUnit tests in a usual way:

[TestFixture]
public class DivideTests
{
    [Test]
    public void Divide10By5ShouldResultIn2()
    {
        var expected = 2F;
        var actual = Calculate.Devide(10, 5);

        actual.Should().Be(expected);
    }

    [Test]
    public void DevideAnyNumberBy0ShouldResultInAnExeption()
    {
        Action act = () => Calculate.Devide(10, 0);

        act.ShouldThrow<ArgumentOutOfRangeException>();
    }
}

Excuting the tests

To execute the tests we can go the same way as using Xunit. We only need to use another command:

"commands": {
  "test": "UnitTestDemo.NunitTests"
},

This calls the program.cs of the current project. All the other things are equal to the Xunit tests. We are able to use the Unit Test Explorer in Visual Studio or we can press the run test button:

Using the command prompt we also have to ensure that we have all the dependencies and we need start the command:

dnu restore
dnx test

This will show you the test results in the console like this:

As you can see, unit testing DNX libraries is pretty easy. Sure this could be improved a lot, but there's currently no reason not to test the your code ;)

Unit testing DNX libraries with Xunit

14.12.2015 17:00:00 | Jürgen Gutsch

DNX libraries are a bit special, there is no project file which handles references. There is no intuitive way to reference libraries and the result of a DNX library is a NuGet package.

A fact is, the a unit test project to test DNX libraries also needs to be a DNX library.

If I'm right, there are currently only two unit test libraries out there, which are supporting .NET Core. This are Xunit which I will show you in this post and and NUnit which is the topic in one of the next posts.

Reference a DNX library

Before we start to unit test, we need to know how to reference another DNX library.

BTW: There are two types of dependencies in a DNX Project, framework/platform specific which are added inside the framework definition and which are only available in that specific framework and global dependencies which will be available for all defined frameworks

Let's create two projects. The first one is the library we need to test and it contains a simple calculation class, with some methods to divide, multiply, and so on. The second project is our unit test project where we need to reference Xunit and our Library to test. We need to add a global dependencies node in the project json where we reference Xunit, the Xunit DNX runner, fluent assertions and our library

"dependencies": {
  "UnitTestDemo": "",
  "xunit": "2.1.0",
  "xunit.runner.dnx": "2.1.0-*",
  "FluentAssertions": "4.0.1"
},

Have a look how I referenced our library. If I don't add a version number it looks for a corresponding folder with a project.json inside. This is the way how we need to reference to another library. If the test library is not next to the library to test we need to add the path to the project.json.

BTW: The FluentAssertions which is used here is just a small helper to write nice and readable assert statements.

Writing tests

Writing tests is pretty common. You can use XUnit in the way you ever used it. For example write something like this:

[Fact]
public void Divide10By5ShouldResultIn2()
{
    var expected = 2F;
    var actual = Calculate.Devide(10, 5);

    actual.Should().Be(expected);
}

[Fact]
public void DevideAnyNumberBy0ShouldResultInAnExeption()
{
    Action act = () => Calculate.Devide(10, 0);

    act.ShouldThrow<ArgumentOutOfRangeException>();
}

Running the tests

At first you need to add a new command to your unit test project:

"commands": {
  "test": "xunit.runner.dnx"
},

This adds the command "test" which calls the Xunit runner. The runner is a DNX console application which gets the current library to test and executes all the unit tests inside.

Once you have compiled your project, you are able to use the unit test explorer in visual studio to run all the tests and to see the test results or you can just press "test" on the run menu in visual studio:

Using this, a console window pops up, does anything and closes. You don't see the any results. This guy runs the command you just created in the project.json and you can do it by your own, by using your favorite console.

Just cd to the directory of your test project, ensure you have all dependencies and start the command:

dnu restore
dnx test

This will show you the test results in the console:

To create a test report into a file you only need to add the xunit runner arguments to the dnx command. You can just call dnx test tun run the unit test on a build server like AppVayor. On a Jenkins or on TFS you need to create test log which is readable by this systems.

Was ist: Visual Studio Dev Essentials?

14.12.2015 12:08:32 | Kay Giza

Was genau ist Visual Studio Dev Essentials? Wir stellen Visual Studio Dev Essentials vor und erklären was Entwickler davon haben. Visual Studio Dev Essentials ist keine eigenständige Software oder gar IDE, sondern eine Dachmarke unter der verschiedenste Software, Entwicklertools, Cloud-Dienste und -Angebote, sowie Premium Schulungs- und Trainings-Angebote zusammengefasst sind... [... mehr in diesem Blog-Eintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
© Copyright 2006-2016 Kay Giza. All rights reserved. Legal

ASP.​NET 5 on a Mac

13.12.2015 17:00:00 | Jürgen Gutsch

I just got my Mac-Mini running running again and I wanted to play around with ASP.NET 5. This Mac-Mini is a build server with a Jenkins installed to build Cordova based iOS Apps. After many weeks I didn't access this machine, I had to install a lot of updates and I had to get all the build stuff again. And by the way I also installed and updated some tools to run ASP.NET 5.

To install ASP.NET 5 I used the installer from get.asp.net. This installs the .NET Version Manager (dnvm) and the latest .NET Execution Environment (DNX) for .NET Core and Mono. (If you want to use the command line to install all that stuff, visit docs.asp.net/en/latest/getting-started/installing-on-mac.html.) I also needed to update node.js and NPM and to install Yeoman as described in the last blog post.

The next steps were pretty easy: Using a terminal cd to Documents, create a new folder dev, cd to dev and complete the Yeoman wizard to create a project called "demo01":

cd Documents
mkdir dev
cd dev
yo aspnet

After the project was successfully created, I started to application.

cd demo01
dnu restore
dnx web

That works completely without any errors. Do you know that bad feeling, if something works unexpectedly fine on the first try? That's how I felt after I called the web on localhost:5000 in Safari:

That's really, really cool :) I really love to have the possibility to run my ASP.NET 5 applications also on Linux Mac.

The real reason I tried .NET Core on Mac is, that I need some extra automation on my build server. For example: Creating a full text index for my Cordova apps is currently done with a Jenkins on a Windows Server machine where the builds for Windows Phone and Android apps are running and currently I copy that full text index to an Azure blob store to use it for the iOS builds. I don't need to transfer the full text indexes to the Mac anymore to build the iOS Apps. The code to create the full text index is written in C# and could be easily moved to a DNX console application to run on every build machine.

Statische Code Analyse mit NDepend 6

09.12.2015 06:30:13 | Johnny Graber

Die neue Version 6.2 von NDepend ist nun seit einigen Tagen verfügbar. Grund genug um zu überprüfen was sich seit meinem letzten Beitrag im April 2014 alles in Sachen statischer Code Analyse bei NDepend verändert hat.   Statische Code Analyse? Mittels statischer Code Analyse kann man seine Programme sehr einfach auf häufig gemachte Fehler hin … Statische Code Analyse mit NDepend 6 weiterlesen

Using Yeoman to create ASP.​NET 5 projects

06.12.2015 17:00:00 | Jürgen Gutsch

To start a ASP.NET 5 application with MVC 6 from scratch, is a bit annoying because it is much to write and always the same work to do. This is why the new project wizards in Visual Studio are still a good thing. But how do we setup a new project on Linux or Mac where we don't have a Visual Studio? VS Code doesn't have something like such wizards.

In the real world - the parallel universe to ASP.NET development, where another kind of web developers are living - there is a pretty cool tool to scaffold new web projects. And since Microsoft is working on ASP.NET 5, they are opening a door to that parallel universe, by using tools from the other side. NPM, Bower, Gulp, Grunt... all of this guys are well known tools in that parallel universe, but pretty new to the ASP.NET web developers.

"Welcome to the marvellous ASP.NET 5 generator!"

One of this tools is Yeoman. It works almost like the Visual Studio wizards. It is a small but strong tool scaffold all kind of projects. And Microsoft adds support for ASP.NET 5 projects.

You need to have node.js and NPM installed on your machine to install and use Yeoman:

npm install -g yo
npm install -g generator-aspnet

if the installation is done you are able to use the Yeoman aspnet generator even offline:

yo aspnet

Use the argument --grunt to use Grunt instead of Gulp. Yeoman is welcome you to the ASP.NET generator wizard:

To select one of the shown templates, you can easily use the arrow keys. For the demos I prefer to use the "Web Application Basic" template out the following:

  • Empty Application
  • Console Application
  • Web Application
  • Web Application Basic [without Membership and Authorization]
  • Web API Application
  • Nancy ASP.NET Application
  • Class Library
  • Unit test project

This will create you a basic project, as known as from the new project wizard of Visual Studio 2015. The "Empty Application" will create you a project with a startup.cs, project.json, a dockerfile and a wwwroot folder which only contains readme.md and a web.config.

All of the yeoman templates are including a dockerfile to create a Docker image out of it and to to run the application on Docker:

FROM microsoft/aspnet:1.0.0-rc1

COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]

EXPOSE 5000/tcp
ENTRYPOINT ["dnx", "-p", "project.json", "web"]

I already wrote about setting up Docker on Windows on my German speaking blog. I'll translate it as soon as possible to add this posts here in the new blog.

After you select a template, Yeoman will ask you for a application name:

This name will used as the application folder name and the default namespace. It will also be used in the title tag in the layout page. Yeoman will show you what files are created and what to do next to start the application:

That's pretty much it. :)

Now you are done setting up your new application and you can start developing using Visual Studio Code or any other tool you want to use.

Additional generators

The Yeoman ASP.NET generator additionally includes many sub generators to create some spacial files, directly in the working directory. For example you can easily create AngularJS controllers, directives, json configs, views, controllers, plan class files. And many other what you maybe needs. To see a list of all sub generators add the argument --help

yo aspnet --help

As you can see, this Yeoman ASP.NET generator and the sub generators are pretty useful to quick setup your ASP.NET project on Linux, Mac and as well on Windows machines.

Compile mssql driver for php with freetds and latest php

06.12.2015 10:39:17 | Andreas Mehl

1. install freetds
 download latest and extract in /etc/php5/fpm/ext/mssql/freetds-xxxxx
 chmod +x ./configure
 ./configure --enable-msdblib --prefix=/usr/local/freetds-xxxxx
 make && make install
 touch /usr/local/freetds-xxxxx/include/tds.h
 touch /usr/local/freetds-xxxxx/lib/libtds.a


2. Download the PHP source extract to
 /home/machine/php-5.6.14/ext/mssql
 cp -avr /home/machine/php-5.6.14/ext/mssql /usr/share/php5
 cd /usr/share/php5/mssql
 phpize
 ./configure --with-mssql=/usr/local/freetds-xxxxx
 make
At this point, ./modules/mssql.so must have been created.


3. Install the mssql extension
 cp modules/mssql.so /etc/php5/fpm/ext/mssql/


4. restart web server
 /etc/init.d/php5-fpm restart


5. check conf file
 \usr\local\freetds-xxxxx\etc\freetds.conf
 # A typical Microsoft server
 [sqlserver]
 host = 192.168.125.14
 port = 1433
 tds version = 7.0

Using Pretzel

03.12.2015 17:00:00 | Jürgen Gutsch

The first time I played around with pretzel was more than a year ago. Since than I tried to find a new blog system what is flexible, lightweight, what supports offline editing and runs on my favorite hosting platform: On Microsoft Azure. I tried a lot of blog systems and CMS, like Ghost, Wordpress, Umbraco. I also tried to write an own Markdown based blog system. But at the end Pretzel is the system which matches my requirements at most.

Pretzel is a Jekyll like blogging system, which uses the same template engine and the same Markdown syntax. Pretzel adds some additional features like Azure support and a Razor template engine. I use the liquid engine which is also used in Jekyll. Almost like Jekyll it is creating a static website based on that template engine and the Markdown contents.

To work with Pretzel you need to use a console. PowerShell should also work, but I prefer to use cmder

To install Pretzel locally, you just need to use Chocolatey:

choco install pretzel -y

Just a view days ago they released a new version 0.3.0, which is not yet deployed to Chocolatey. I downloaded the latest release and copied the bits to the Chocolatey install folder, which is C:\tools\pretzel\ in my case. This versions contains important big fixes.

After Pretzel is installed you can easily start baking a pretzel blog. Just create a working folder somewhere on your machine cd into that folder and type

mkdir pretzelblog
cd prezelblog
pretzel create --azure

This command creates a new pretzel blog. That argument --azure adds support to bake/compile pretzel blogs directly on a Azure Webiste.

The contents of your folder should look like this:

That's all to create a new blog. The blog sources, the posts and the templates are inside the _source folder:

Now lets show you how it looks like in the browser. To start the blog locally you need to cd into the _source folder taste the Pretzel blog:

cd _source
pretzel taste --drafts

Add the argument --drafts to also see the drafted posts. The command taste starts a small web server listening to localhost:8080 and opens the default browser where you can start using the blog.

If it's all fine you can bake your Pretzel blog

pretzel bake

This command creates a folder called _site inside the inside the _source folder with the compiled blog inside. This is the baked Pretzel blog which is a static website, built with the templates and the posts and pages written in markdown. You can put the contents of this folder to any web server.

Setup the deployment

The idea was to have the blog under Git source control and automatic deploy it to an Azure website. I use GitHub to host the repository and I linked that repository to an Azure website to automatic deploy it every time I push changes to the repository. In the first time I didn't use the argument --azure to create my blog, because the idea was to just push the compiled blog every time I change something or every time I create a new blog post. This means I only had the folder _site under source control. This works really great, because there is nothing special. Only the compiled static web was pushed and deployed.

But this wasn't really a good idea and I had some problems with this:

  1. The Markdown contents and the templates are not under source control
  2. I always need to bake the Pretzel blog before I can push.
  3. Because the Markdown is not on GitHub pull requests are made on the compiled web and I need to merge on GitHub AND locally in the Markdown contents.

Using the argument --azure while creating the Pretzel blog adds a Visual Studio solution and a dummy project to the working folder. The Solution also contains a Visual Studio website project which points to the _site folder. The dummy project contains an empty class and a post build command which just bakes the Pretzel blog:

<Target Name="AfterBuild">
	<Exec Command="pretzel.exe bake -d _source" />
</Target>

Every time I push changes to the repository the Azure website pulls the changes, compiles the dummy project, executes that command and than some Azure-Kudu-magic happens: Kudu copies the contents of the website project to the wwwroot folder of the Azure website. It magically does exactly what I want to have. If I call the Azure website within the browser I get the expected result.

In the current version 0.3.0 the argument --azure doesn't work completely correct, because it only copies the pretzel.exe to the working folder. Since they changed the output to deploy also some additional libraries, all the depended libraries also need to be copied to the root:

This looks a bit messy, but it works. They need to ILMerge all the libraries or they need to fix the --azure argument

The next step to do is to git ignore the contents of the folder _site and the contents of the folder _drafts if you don't want to publish drafts to a public repository. To ensure the empty folder _site will be deployed to Azure (this is needed to don't get a compile error) I just added the index.html of the compiled web to the repository.

As you can see, it is pretty simple to setup a Pretzel blog. The real work starts now changing the templates to add a nice layout and creating the first blog posts :)

GreenDao ... und wo sind meine Daten?

03.12.2015 11:12:00 | Martin Hey

In meinen Android-Projekten verwende ich gern GreenDao als OR-Mapper, denn es ist einfach zu verwenden und nach Aussagen des Herstellers auch performant und ich habe bisher keinen Grund gehabt daran zu zweifeln.

Heute bin ich über ein mir zunächst nicht erklärbares Phänomen gestolpert, das sich im Nachhinein mit Performance-Optimierungen im GreenDao-Core erklären lässt.

Aber ich beginne von vorn. Meine App hat einen klassischen Aufbau - eine Liste und per Klick auf einen Eintrag sieht man die Details und kann diese editieren. Jeder dieser Einträge hat nun noch datumsabhängige Sub-Daten. 

Um es zu verdeutlichen: Wald - Baum - Stammumfang pro Tag.

Da ich sowieso den Baum identifizieren und dessen Daten anzeigen musste, habe ich wie folgt auf die Daten zugegriffen:
Tree tree = _daoSession.getTreeDao().load(id);
List<MeasuringValue> mvls = tree.getMeasuringValueList(); 

Das Speichern der eigentlichen Daten erfolgt dann auch ganz nach Doku.
MeasuringValue mv = new MeasuringValue();
mv.setTreeId(id);
mv.setDate(date);
mv.setCircumference(circumference);

_daoSession.getMeasuringValueDao().insert(mv);

Das Phänomen ist nun gewesen, dass beim erneuten Aufrufen die neu gespeicherten Datensätze zunächst nicht vorhanden waren. Das Problem war mit debugging auch nicht nachvollziehbar - alles funktionierte korrekt und war auch auslesbar. Noch seltsamer: auch ohne angehängten Debugger waren die Daten die zunächst nicht angefügt schienen nach einigen Minuten doch enthalten.

Wie schon geschildert verwendet GreenDao einen Cache und der scheint hier das Problem zu sein, da ich die Daten auf einem anderen Weg auslese als ich sie einfüge. Beim Auslesen gehe ich über den Fremdschlüssel von Tree, beim Einfügen gehe ich direkt über die Messwert-Tabelle.

Das Problem lässt sich umgehen, indem man den Cache von GreenDao leert. 
_daoSession.clear();
Nachteil: man tauscht aktuelle Daten gegen den Performancevorteil ein - und so wäre die richtigere Lösung die Daten über den gleichen Weg auszulesen wie man sie anfügt.

Microsoft Fixed the NuGet Package Manager with the Version 3.3

01.12.2015 17:00:00 | Jürgen Gutsch

In the summer this year the NuGet Package Manager got an update, which changes the UI completely. This new UI wasn't really intuitive to use and confuses many users.

With the Update 1 of Visual Studio 2015 MIcrosoft also delivers an update of the NuGet Package Manager. Now the UI is pretty much cleaner and easier to understand. There are still some things to do, but if you compare to the previews UI this is much better.

The first thing you will see are the new tabs in the left upper area. Here you can change the list to browse all or all found packages, you can view the installed packages and now you have a clean list of the packages which have new versions available:

As you can see, there are the number of updates shown in the third tab. Also the selection of the package source is easily done in the right upper area, where you also able to access the NuGet option:

If you take a look at the package list, there is another pretty cool feature. If there is a package found which delivers exactly the same thing as an Bower package does, you will see a small message with a link in it. This message tells you that you should use Bower to install this package. The link opens up the new Bower package manager. Bower is the cool package manager which should be used to add client side libraries to web projects:

If you go the updates by clicking the Updates tab, you'll see another nice thing. Now you can update as many packages as you want. You can use a checkbox on the left side of each package to select the packages you want to install. In the past it only was possible to update one or all packages:

On the right side of each package in that list, Microsoft added one to two action buttons to quick do something with that package. Depending on which tab you are. You can quick install in the "Browse" tab, quick uninstall on the "Installed" tab or both uninstall or update on the "Updates" tab:

The NuGet Package Manager is divided into three areas: The heading area with the tabs, the search, the package sources, a list area on the left with the list of packages and its action buttons and a kind of a summary area on the right where you will see actions and summary information about the currently selected package. The actions are completely are more detailed as with the action buttons in the list. E. g. you are able to update to a specific version, instead of the latest version only. You will see the dependencies, project and license links, descriptions and so on.

The only thing what is not really on the right place are the options in the summary area. This is wrong because this options are not specific to the selected package, but some more global. From my perspective this options should be moved to the options dialog:

What do you thing? Update your Visual Studio to Update 1 and tell me your opinion about the new UI of the NuGet Package Manager.

I'm very happy about this changes, even if I use this tool less than before, because to project.json files in DNX libraries are more comfortable from my point of view. ;)

By the way: There is a much more detailed blog post about the new Package Manager and many more new features available on http://blog.nuget.org/20151118/nuget-3.3.html

Regeln | Impressum