SPEmulators v1.1.0 available

I just released the new Version (v1.1.0) of the #SPEmulators on nuget. The release contains the following changes: Support for test projects that target .net 4.5 (previous 4.5.1) Support for VS Premium with version 2012 Update 2 or higher (thanks to Tiliavir for the support) The assembly is now signed Added support to create lists by schema.xml and elements.xml to GetOrCreateList The last feature is quite experimental. There is support for fields (text, number, date, user, lookup) from schema.xml. There is also support for the basic properties in the elements.xml. I also added support for default data that is deployed … Continue reading SPEmulators v1.1.0 available

SPEmulators available on nuget

Every SharePoint developer that does TDD is desperately waiting for Microsoft to release a Version of the Microsoft.SharePoint.Emulators for SharePoint 2013. Unfortunately it seems that Microsoft does not have any plans to publish a new release in the near future. This is completely incomprehensible since there are a lot of SP2010 solutions that must be migrated to SP2013. To close the gap there is now the the nuget package SPEmulators. The source code is available in a repository on GitHub. Installation To install SPEmulators, run the following command in the Package Manager Console: Install-Package SPEmulators. You can also search for … Continue reading SPEmulators available on nuget

SPEmulators auf NuGet verfügbar

Eine lange Zeit nun warten die SharePoint-Entwickler auf eine neue Version der Microsoft.SharePoint.Emulators für SharePoint 2013. Leider scheint Microsoft aber in absehbarer Zukunft keine neue Version herauszubringen. Das ist völlig unverständlich, da es ja auch viele 2010er Lösungen gibt, die nach 2013 migriert werden müssen. Um die Lücke zu schließen gibt es jetzt das Nuget-Package SPEmulators. Der Code ist auf GitHub verfügbar. Installation Die Installation erfolgt wie immer per Package-Manager-Console mit dem Befehl: “Install-Package SPEmulators”. Alternativ kann über “Manage NuGet Packages” nach dem Paket gesucht werden. Ein Klick auf “Install” fügt das Paket dem aktuelle Projekt hinzu. Erstellen des ersten … Continue reading SPEmulators auf NuGet verfügbar

Dependency Inversion Principle (DIP) und Dependency Injection (DI) in c# / .net

Das Dependency Inversion Principle (DIP) und Dependency Injection (DI) sind die wichtigsten Grundlagen für einen modularen, test- und erweiterbaren Aufbau einer Software. Sie bilden damit einen fundamentalen Baustein der agilen Softwareentwicklung. Ich weiß: es gibt bereits tausende von Büchern und Artikel über dieses Thema. Trotzdem sehe ich immer wieder, dass es nicht wirklich verstanden und in der Praxis – besonders in kleinen und mittleren Projekte – komplett ignoriert wird. Deshalb möchte ich noch einmal einen einfachen Einstieg in das Thema für .net-Entwickler starten. Das DIP besagt: A. HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOW LEVEL MODULES. BOTH SHOULD DEPEND … Continue reading Dependency Inversion Principle (DIP) und Dependency Injection (DI) in c# / .net

Codegenerierung aus Modeling Projects – Part 3

In Part 1 und Part 2 der Serie habe ich schon die Generierung von Code aus Visual Studio Modeling Projects und die Anpassung der T4-Templates beschrieben. In diesem Teil geht es um die Erstellung eines eigenen “Profiles” mit neuen Stereotypen. Ein eigenes Profile muss als Visual Studio Extension (.vsix) erstellt werden. Dazu ist das Visual Studio SDK nötig. Ist dieses installiert, dann kann über den Dialog “Neues Projekt” eine neues “Visual Studio Package” erstellt werden. Die Angaben in Wizzard sind eigentlich selbsterklärend. Da das Paket nur als Container benötigt wird, können fast alle Optionen deaktiviert werde. Dem Projekt muss man … Continue reading Codegenerierung aus Modeling Projects – Part 3

Codegenerierung aus Modeling Projects – Part 2

In Part 1 der Serie habe die Grundlagen der Generierung von Code in Class-Diagrammen in Modeling Projects beschrieben. In diesem Teil geht es um die Verwendung von unterschiedlichen T4-Templates und deren Anpassung. Die Auswahl der T4-Templates erfolgt über die Eigenschaft “Text Template Bindings”. Hier werden bei der ersten Generierung Standardtemplates für Class, Enum, Interface und Struct hinterlegt. Die Templates haben folgende Eigenschaften: Titel Beschreibung Name Name des Templates Overwrite Gibt an ob die Zieldateien überschrieben werden. ProjectPath Name des VS-Zielprojektes. Ist das Projekt nicht vorhanden, dann wird es erstellt. Hier sollte man immer das Projekt ändern, da der Standard <name_model_project>Lib.csproj … Continue reading Codegenerierung aus Modeling Projects – Part 2

Codegenerierung aus Modeling Projects – Part 1

Visual Studio unterstützt die Generierung von Code aus einem Modeling Project heraus. Dabei kommen t4 Templates zum Einsatz. Diese können auch erweitert und angepasst werden. Hier eine kleine Anleitung, wie man sinnvoll Code aus einem Model generieren kann. In Teil 1 ist die Standardfunktionalität beschrieben. In Teil 2 werde ich die Anpassung von den T4-Templates beschreiben. In Teil 3 werde ich schließlich ein eigenes Profil mit eigenen Stereotypen erstellen und die Codegenerierung “customizen”. Beginnen Sie zunächst mit einem Package. Dem Package können folgende Eigenschaften zugewiesen werden: Der Name des Paketes entspricht dem C#-Namensraum und optional einem Ordner im Zielprojekt. Über … Continue reading Codegenerierung aus Modeling Projects – Part 1

Strukturelle Integrität

Wenn man als Entwickler in ein neues Projekt kommt, dann fällt es einem fast immer schwer sich im bestehenden Code zu orientieren. Entweder es gibt zu wenig Struktur, d.h. alle Dateien liegen in wenigen oder keinen Projekten/Ordnern, oder zu viel, d.h. alle Dateien verstecken sich hinter einer tiefen Struktur an Ordnern mit mehr oder weniger sinngebenden Namen. Deshalb die Frage: wie müssen wir Code strukturieren, dass sich neue Teammitglieder schnell und problemlos in der Struktur zurecht finden? Es geht mir an der Stelle jetzt erst mal gar nicht um die Aufteilung in eigene Komponenten. Dies alleine kann ganze Büche füllen. … Continue reading Strukturelle Integrität

Wichtiger als Qualität?

Was gibt es wichtigeres als Qualität in der Softwareentwicklung? Wenn man die Frage so stellt, bekommt man immer “Nichts!” als Antwort. Trotzdem ist das dann aber nicht das, was wir in der Praxis sehen. Schulung? Keine Zeit. TDD? Keine Zeit. Code Reviews? Keine Zeit. Warum tappen wir in der Softwareentwicklung immer wieder in die gleiche Falle? Schlechte Qualität führt unweigerlich in eine Spirale. Es entstehen Bugs, die wir in nachfolgende Sprints oder schlimmstenfalls sogar Projekte “mitnehmen”. Diese Bugs sind extrem schwer zu planen. Sie sind viel Aufwändiger als gleich gute Qualität anzuliefern. Und sie hindern uns wieder daran “wichtiges” zu … Continue reading Wichtiger als Qualität?