Webseiten, Produkte und Tools, die jeder VBA-Entwickler kennen sollte

VBA steht für Visual Basic for Applications. Im Grunde genommen kennt nahezu jeder Softwareentwickler diese Programmiersprache, die ihren Ursprung in den Office-Produkten hat. Denn hier kommt sie i.d.R. zum Einsatz: Outlook, Word und Excel. Hier wird am meisten automatisiert, bis der Arzt kommt.

Während unserer Meinung nach VBA eine große Flexibilität bietet, sehen wir uns aber oft einer eher negativen Einstellung gegenüber VBA ausgesetzt.

Die Gründe lassen sich einfach auflisten:

  • Kein besonders intelligentes IntelliSense
  • Keine Anbindung an eine Quellcode-Verwaltung*
  • Kein Refactoring
  • Kein Exception-Handling
  • ...

Die Liste ist noch viel länger, aber eines wird schnell klar: VBA ist kein C# und VBE (Visual Basic Editor) ist kein Visual Studio. Allerdings ergeben sich so auch Vorteile: Fachabteilungen können zumeist eigene Herausforderungen schnell und flexibel lösen (ohne von der IT oder der Entwicklungsabteilung abhängig zu sein). Es werden keine zusätzlichen Lizenzen für Entwicklungsumgebungen benötigt, da alles, was man braucht, in Office integriert ist (inkl. der Laufzeitumgebung). Installationssysteme sind nicht notwendig, da der Code Bestandteil der jeweiligen Dokumente ist. Natürlich empfinden wir die Nachteile (siehe oben) aber auch als problematisch.

Um sie im Vergleich zu modernen Programmiersprachen und Entwicklungsumgebungen ein wenig auszugleichen, hat der an Qualität interessierte VBA-Entwickler nichts desto trotz Zugriff auf einen reichhaltigen Fundus an Know-How und Erweiterungen.

Dieser Artikel listet einige davon auf (und erfüllt natürlich nicht den Anspruch auf Vollständigkeit; Ergänzungen werden gerne gesehen > Ab damit in die Kommentare!).  

MZ-Tools

MZ-Tools ist der Platzhirsch unter den Anbietern von (u.a.) VBA-Erweiterungen. Der Anbieter selbst spricht von Funktionen, die einen schneller Ergebnisse erzielen lassen, besser Code wiederzufinden, besser Oberflächen zu gestalten, einfach Dokumentationen zu generieren, u.v.m.

Link zur Website

Rubber Duck

Hierbei handelt es sich um ein ambitioniertes Open Source Projekt, das sich anschickt, den Visual Basic Editor ins 21. Jahrhundert zu katapultieren. Auch in dieser Erweiterung finden sich Funktionen wie z.B. ein integriertes Refactoring und eine regelbasierte Überprüfung der Code Qualität. Die Besonderheit von Rubber Duck: Ab Version 2.0 ist eine Anbindung von Git als Quellcode Verwaltung vorgesehen! Übrigens: Rubber Duck beinhaltet auch einen Testrunner für VBA Unit-Tests. Kein Witz!

Link zur Website

Tipps und Tricks von Pearson Software Consulting

CPearson bietet eine unfassbar umfangreiche Liste an Tipps und Tricks im Umgang mit u.a. VBA an. Auch nur Ansatzweise darzustellen, was man hier alles lernen kann, würde den Artikel sprengen. Hier (für mich) zwei Perlen: "Implementing Interfaces in Class Modules" (ja, es geht noch immer um VBA!) und "Introduction to Classes".

Link zur Website

Excel Tips von J-Walk & Associates

Auch hier gibt es eine lange Liste von Tipps für Entwickler, kategorisiert nach VBA Functions, UserForms, CommandBars & Menus und General VBA. Auch für Benutzer finden sich hier zahlreiche Hinweise, die einem das Leben in zumindest Excel deutlich erleichtern.

Link zur Website

Excel-Formeln übersetzt

Zugegeben, hier geht es weniger um VBA direkt, als denn mehr um Excel. Da allerdings auch oft von VBA aus Excel-Dokumente automatisiert werden, kann es manchmal hilfreich sein, Zugriff auf eine Übersetzungstabelle für Excel-Formeln zu haben. Wer also schon oft mit einem SVERWEIS gearbeitet hat, weiß nun, dass der englische Begriff hierfür VLOOKUP lautet.

Linke zur Website

* Ausgenommen Microsoft Access bis - ich glaube - Version 2010. Hier gab es früher eine Integration des MSSCCI Providers für die Anbindung an z.B. Visual Source Safe oder den TFS. Allerdings hat diese Funktion nicht bis heute überlebt und wurde auch nur selten genutzt.

 

Wie eine Attribute-Level Remediation in OIA funktioniert…

… wissen wir leider auch nicht.

Das heißt: Eigentlich schon. Aber es ist nicht gerade so, dass die Funktion besonders sinnvoll erscheint. Doch was ist damit eigentlich gemeint?

In Oracle Identity Analytics werden Daten vereinfacht gesagt wie folgt strukturiert:

image

 

Es gibt also globale Benutzer (darunter versteht der OIA Identitäten, also reale Menschen) und darunter Accounts. Sprich: Ein Mensch kann über mehrere Accounts (z.B. Anmeldekonten) verfügen. Jedem Account können mehrere Attribute zugewiesen sein, die den Account besser beschreiben. Dabei können Attribute auch verschachtelt werden. Beispielsweise ist es so möglich, folgendes abzubilden:

Global User > Account > Group Membership > Folder Permissions

In diesem Fall kann also ein Mitarbeiter über einen Account verfügen, der Mitglied in verschiedenen Gruppen ist, wobei jede Gruppe über spezifische Verzeichnisberechtigungen in irgendwelchen Netzwerk-Shares verfügt.

Attribute-Level Remediation

Unter Remediation versteht man in der Welt des OIA die Notwendigkeit von Korrekturen, die immer dann anstehen sollten, wenn eine IST-Situation von einem SOLL abweicht. Hat ein Mitarbeiter z.B. das Unternehmen verlassen, sein Account existiert aber nach wie vor im Active Directory, müsste bei einer Identity Certification genau das herauskommen: Der Zertifizierer bekommt den Mitarbeiter vorgelegt und lehnt ihn direkt ab (disclaim). Der OIA erkennt den Unterschied und führt den Benutzer der Korrekturverfolgung zu (Remediation Tracking).

Was aber, wenn nicht der Benutzer (bzw. die Identität oder wie der OIA sagen würde: der Global User), und auch nicht in dem Sinne dessen Account, sondern stattdessen Gruppenmitgliedschaften zertifiziert werden sollen – bzw. korrigiert werden sollen, falls IST und SOLL voneinander abweichen?

Dann ließe sich das – nach offizieller Aussage – mittels der Data Owner Certification abbilden. Neben der Benutzer-, Rollen- und Ressourcenbasierenden Zertifizierung ist das die Nummer vier im Bunde:

image

 

In dieser Art der Zertifizierung ließe sich nämlich auf Ebene der Attribute arbeiten. Dazu werden einfach die gewünschten Attribute ausgewählt:

image

 

Doch nun kommt der Pferdefuß: Wie bei allen anderen Zertifizierungstypen auch muss natürlich noch die Frage beantwortet werden, wer denn nun die Zertifizierung ausführen soll. Bei einer Identitätsbasierenden Zertifizierung kann das z.B. der Manager der jeweiligen Ressource sein, oder aber der Manager der jeweiligen Abteilung.

Bei der Data Owner Zertifizierung kann entweder nur ein einziger Mitarbeiter dazu auserkoren werden, oder aber – hence the name – der jeweilige Data Owner. Ein einziger Mitarbeiter wäre in den meisten aller Fälle unsinnig. Denn der müsste dann ja die entsprechenden Attribute aller Mitarbeiter des Unternehmens zertifizieren. Und in der Annahme, dass nur Großunternehmen ein Produkt wie den OIA einsetzen, gehe ich davon aus, dass einen Mitarbeiter mit dem Thema zu beschäftigen vermutlich gegen das Arbeitsschutzgesetz verstößt (oder wird Folter hier nicht berücksichtigt?).

Data Owner

Wer ist denn nun also der Data Owner?

Die Ressourcenansicht zeigt: Jedes einzelne Attribut an jedem einzelnen Account hat einen eigenen Data Owner:

image

 

Interessanter Fact am Rande: Die Frage danach ob es Sinn ergibt oder nicht mal beiseite gestellt, lassen sich Data Owner über die OIA Oberfläche hinzufügen. Die Sache ist nur die: Man kann sie nicht wieder entfernen (nur ein Hinweis, falls es jemand versuchen sollte).

Da aber auch hier ein gewissen Mengenproblem dem Tatendrang die Motivationsgrundlage entzieht, stellt sich also eher die Frage, ob sich der Data Owner beim Importieren der Accounts setzen lässt. Einen pfiffigen BI-Experten mit Kenntnissen in der Bedienung eines modernen ETL Tools vorausgesetzt wäre das doch die Lösung. Richtig?

Falsch. Denn der Data Owner lässt sich eben nicht automatisiert importieren.

Ende der Geschichte.

Falls jemand dazu andere Informationen vorliegen hat, oder einen Weg kennt, das Problem zu lösen, freue ich mich über einen Kommentar. Anderenfalls greife ich es vielleicht noch einmal auf, sollten wir selbst dazu eine Lösung finden (mir schwebt hier die Implementierung eines benutzerdefinierten Post-AccountImport Jobs vor – ähnlich den MaintenanceJobs und einer konfigurierbaren Zuordnung zwischen Attribute-Values und Data Ownern).

Microsoft goes Linux und ich installiere Oracle Identity Analytics auf einem Windows Server

Zugegeben, die Idee, den OIA auf einem Windows Server zu installieren klingt zunächst einmal hanebüchen. Warum sollte man so etwas tun? Nun, ganz einfach: 1. Weil es sich bei dem OIA um nicht mehr und nicht weniger als eine Web-Anwendung handelt, der es egal sein sollte, auf welchem Betriebssystem sie gehostet wird und 2. Weil es dem OIA tatsächlich egal ist, auf welchem Betriebssystem es gehostet wird.

Außerdem bewege ich mich leichtfüßiger in der Microsoft-Welt im Vergleich zu bspw. Oracle Linux.

Hintergrund ist aber eigentlich das Bedürfnis, völlig frei und unabhängig mit dem OIA experimentieren zu können. Wie lässt sich die Anwendung customizen? Wie können hierarchische Daten importiert werden? Wie funktioniert eine sog. "Open Loop Remediation" und was muss man dazu in der Konfiguration beachten?

Kundenserver haben die Angewohnheit, meist von anderen administriert zu werden. Auf meinem eigenen Hyper-V Windows Server kann ich aber schalten und walten, wie es mir gefällt, Checkpoints erstellen, Daten in den OIA importieren, wieder löschen, Identitäten anlegen, Zertifizierungen nur zum Test durchführen, eigene Java Beans für die Integration OIA-fremder ETL Tools einbauen (und sie wieder ausbauen, weil das vermutlich nicht funktionieren wird), etc. pp.

Und wer denkt, für den Oracle Identity Analytics Server bräuchte es Oracle Experten, um ihn zu installieren, der irrt. Zumindest unter Windows sind die notwendigen Schritte für eine einfache Basis-Installation nicht schwer. Die "Setup-Experience" unterscheidet sich zwar spürbar von der Installation gewohnter Microsoft-Produkte, aber wenn man bestimmte Dinge beachtet, funktioniert alles reibungslos:

  • Installation von Windows Server 2008 R2
  • Installation von Oracle Database 11
  • Einrichten einer Datenbank (rbacx) und Erstellen eines Benutzers (rbacxservice)
  • Vorbereitung der OIA Installation
  • Erstellen des OIA Datenbankschemas
  • Installation des WebLogic Applicationservers
  • Einrichten einer WLS Domain (rbacx)
  • Deployment der OIA Anwendung

Auf dem Weg zur funktionierenden OIA Installation müssen verschiedene Dinge beachtet werden. Einige Konfigurationsdateien beispielsweise verlangen eine Umgebungsvariable, die am sinnvollsten als Systemvariable eingerichtet wird (sonst läuft schon mal gar nichts). Gemeint ist übrigens RBACX_HOME. Das steht aber im Prinzip bereits in der Installationsanleitung. Außerdem wird ein Windows-Administrator bei dem Gedanken schmunzeln, dass so etwas Triviales wie ein Datenbank-Treiber separat heruntergeladen und eingebunden werden muss (ojdbc). Interessant wird es bei Dritt-Abhängigkeiten wie z.B. Jasper-Reports oder CloverETL.

Ersteres ist die OSS Reporting Engine, deren korrekte Version nicht mehr da zu finden ist, wo die Anleitung es behauptet. Selbiges gilt für CloverETL. Die Idee dahinter ist eigentlich pfiffig: Der OIA integriert die Open Source ETL Engine, so dass Transformationen von Quelldaten vor dem eigentlichen Import in den OIA vom OIA selbst automatisiert durchgeführt werden können. Der Haken daran ist lediglich, dass es sich um die so ziemlich älteste Version der Engine handelt, die es gibt: Sie stammt von 2006 und nach zwei Akquisitionen hat es der aktuelle Rechteinhaber Oracle nicht geschafft, das Thema zu aktualisieren (zuvor hieß der OIA noch Sun Role Manager und davor hieß es Vaau RBACx). Unglücklicherweise gibt es die alte Clover GUI nicht mehr, die mit CTL1 in der Lage war, OIA kompatible ETL-Graphen zu erzeugen. Da die in den OIA integrierte CloverETL Engine nicht mit CTL2 kompatibel ist, hilft einem der aktuelle CloverETL Designer auch nicht weiter. Mal abgesehen davon, dass die Anschaffung mit nicht unerheblichen Lizenzkosten verbunden ist.

Es wäre für mich mal interessant zu erfahren, wie andere Unternehmen damit umgehen. Irgendwie müssen die Daten ja vorverarbeitet und qualifiziert werden. Mit Microsoft SSIS? Mit Talend Open Studio? Mit Informatica PowerCenter? Und wie wird das jeweilige Produkt in den OIA Workflow eingebunden?

Mehr dazu vielleicht ein anderes Mal.

Visual Studio Dev Essentials - 6 Monate Pluralsight für lau (und Tools, und Azure, und… und… und…)!

Microsoft stellt mit dem “Visual Studio Dev Essentials” Programm eine Menge geniale Dinge rund um die Softwareentwicklung kostenlos zur Verfügung:

“Besorgen Sie sich alles, was Sie zum Erstellen und Bereitstellen Ihrer App auf beliebigen Plattformen benötigen. Mit Tools auf dem neusten Stand der Technik, der Leistung der Cloud, Schulungen und Support ist es das umfassendste kostenlose Angebot für Entwickler jemals.”

Neben DEV-Tools werden auch kostenlose Schulungen angeboten, u.a. ein kostenloses Abonnement von Pluralsight für 6 Monate. Diese Angebot gilt nur noch bis 31. Dezember 2015, also schnell zuschlagen!

Pluralsight stellt über 4,500 Videokurse bereit, die eine sehr hohe inhaltliche Qualität haben.
Die Kurse umfassen alle Themengebiete rund um IT, von der Softwareentwicklung, über Infrastruktur bis zum IT Management ist für jeden was dabei!

Die DEV-Tools beinhalten z.B.  Visual Studio 2015 Community Edition, TFS Express und monatliche Azure Gutschriften. Es lohnt sich also auch hier einen Blick zu werfen!

Hier geht’s zur Anmeldung: https://www.visualstudio.com/de-de/products/visual-studio-dev-essentials-vs.aspx

1. Auf den Großen Grünen Knopf™ drücken:

image

 

 

 

 

 

 

 



2. Promocode anfordern

image

 

 

 

 


3. Mit Promocode zu Pluralsight wechseln (der Link ändert sich nach Schritt 2)…

image

 

 

 

 


4. …und bei Pluralsight registrieren

image

 

 

 

 

 

 




5. ???

6. Learn!

Das kennst du schon alles? Dann bewirbt dich sofort bei TOP TECHNOLOGIES!

Olle Kamellen. #Not Oder: Was ist eigentlich mit StyleCop für VB.NET?

Folgenden Eintrag habe ich in einem alten internen Blog wiederentdeckt. Den habe ich Ende Dezember 2008 geschrieben,... vor knapp 7 Jahren.

Im Mai 2008 veröffentlichte der MSFT-Angestellte Jason Allor StyleCop. Seit dem fragen sich viele, warum es nur C#, aber kein VB.NET unterstützt. Um der Frage nach etwaigen politischen Hintergründen vorzubeugen, hat Jason selbst das Wort an die Community gerichtet:

To understand why there is no version for VB, it's necessary to understand the history of the tool. StyleCop was written as a Microsoft internal tool, to be used by our own internal developers who are coding in C#. StyleCop is not owned by the C# team, but was developed independently. We released StyleCop externally to allow the community to get the same benefit from this tool that we were getting internally at Microsoft.

Since the release of StyleCop there have been some calls from the community to do a version for VB. Unfortuantely there is a technical limitation currently to this happening. StyleCop requires a managed language service to parse and process the code before it can be analyzed. For C#, a language service was written from scratch to support the tool. But one doesn't exist today for VB, and this is a very high bar to entry. However, work is underway at Microsoft to create new, reusable, hostable managed language services both for C# and for VB. This work is still in the early stages, but the plan is to dump the custom C# parser used in StyleCop in favor of the official managed C# language service when it becomes available. At that time, it will probably also become technically feasible to do a version of StyleCop for VB. At that time, there will need to be some evaluation of the demand for a VB version of StyleCop in the community, and it will likely be up to the VB team to determine whether they want to support this.

Ursprüngliche Quelle (die leider nicht mehr existiert): http://code.msdn.microsoft.com/sourceanalysis/Thread/View.aspx?ThreadId=383

Die beiden interessanten Passagen habe ich hervorgehoben. Ich nehme an, mit Roslyn wurde genau das erreicht, wovon Jason 2008 sprach. Nur... was ist seitdem aus StyleCop geworden? Vergessen? Weiß jemand mehr?

Multiplattform mal anders: Heute schon Bridge gespielt?

Wer meint, Software-Entwicklung ginge nur nativ, oder mittels Cross-Plattform Umgebungen wie z.B. Apache Cordava oder Xamarin, der kennt Microsofts Universal Windows Plattform noch nicht.

Ganz gleich, ob jemand nativ für Android oder iPhone/iPad entwickelt und dabei Java oder Objective-C nutzt (und das in seiner bevorzugten Entwicklungsumgebung): Das Ziel der Universal Bridges wird es sein - vereinfacht gesagt - im nächsten Schritt einen zusätzlichen Layer zu ergänzen und die jeweilige App dann ganz normal im Windows Store veröffentlichen zu können.

Hier einmal kurz der Überblick über die wichtigsten Projekte der Universal Windows Plattform dazu:

Bereits spannend für Android Entwickler ist dabei die Möglichkeit, ihre Apps direkt auf einem Windows Smartphone testen zu können. Hierzu kann das entsprechende .apk Paket ohne Umschweife auf dem Device installiert werden. Ermöglicht wird das durch ein in Windows 10 for Mobile integriertes Android Subsystem, das auf Virtualisierung basiert. Dieses Feature ist allerdings – genau wie Windows 10 for Mobile – noch nicht final und selbst in der aktuellen Insider Preview noch nicht offiziell verfügbar. Findige Entwickler haben dennoch entdeckt, wie sich die Funktion bereits jetzt ausprobieren lässt.

Oberflächlich betrachtet ergibt sich hieraus für Microsoft eine Win-Win Situation: Objective-C und Java App-Entwickler haben die Chance durch die Marktausdehnung ihren Umsatz zu erhöhen - und das nahezu ohne Aufwand, oder eine neue Sprache oder Entwicklungsumgebung erlernen zu müssen. Microsofts Windows Store wiederum erhält einen Boost an neuen Apps, die es zuvor nur auf anderen Systemen gab. Diese Strategie bietet Microsoft mittelfristig die Chance, mit dem eigenen Store gleichauf mit der Konkurrenz zu ziehen. Doch wie wirkt sich das auf die App-Entwickler aus? Verschieben sich dadurch die Märkte? Gewinnt vielleicht die Windows 10 for Mobile Plattform so an Attraktivität, dass langfristig Microsoft hier die erste Geige spielt?

Einer Statistik vom Kantar Wordpanel nach besaß Microsoft mit der Windows Plattform im mobilen Sektor in Deutschland einen Marktanteil von etwa 8,5% Ende Mai 2015, während Apple mit dem iPhone mit 15,9% weit darüber lag und Google mit Android den Markt mit 74,7% weiterhin dominierte. Allerdings hat Android gegenüber dem ersten Quartal auch einiges an Marktanteil verloren (was hauptsächlich auf die Einführung vom iPhone 6 zurückzuführen ist).

Bezogen auf die fünf größten europäischen Märkte (Deutschland, Frankreich, Großbritannien, Italien und Spanien) hat Microsoft hier sogar fast die 10% Marke erreicht. In Deutschland allein sind es mit Stand Ende Juni 2015 sogar bereits 10,5%. Das Wachstum ist hier klar erkennbar.

Einen Überblick über die Daten gibt es hier.

Egal, welchen Weg die Entwickler also einschlagen: Native Entwicklung, Web-Entwicklung, Cross-Plattform Entwicklung, es ist bereits jetzt abzusehen, dass die Frage nach der App-Verfügbarkeit bald kein entscheidendes Kaufkriterium mehr sein und zunehmend wieder die Qualität der Geräte und die Usability im Vordergrund stehen wird.

Im Zeitalter von Cloud-Computing, BYOD und dem massenhaften Schwenk von Desktop PCs zu mobilen Tablets oder Smartphones ist das für Ihr Business in jedem Fall eine positive Nachricht. Und falls Sie einen Partner suchen, mit dem Sie Ihre zukünftige Business Strategie hinsichtlich der Wahl einer geeigneten Plattform diskutieren möchten, sprechen Sie uns gerne an!

Nie wieder Ärger mit NuGet!

Vielleicht hast du das auch schon erlebt, wenn du NuGet und TFS verwendest:

Das Updaten eine NuGet Pakets erzeugt völliges Chaos in der Projektmappe:

Im Projektmappen-Explorer sieht alles gut aus. Die Ansicht „Ausstehende Änderungen“ im Team Explorer zeigt ein anderes Bild: Nur ein paar Dateien sind geändert, und viele Dateien sind gelöscht, obwohl sie ebenfalls geändert sein sollten.

Durch Einchecken wird das Projekt dann defekt: Dateien werden fälschlicherweise gelöscht, obwohl sie noch in den Projekten verwendet werden, und die Builds schlagen fehl.

TL; DR: Das Problem tritt nur bei lokalen Arbeitsbereichen (Local Workspace) auf. Benutze einen Serverarbeitsbereich (Server Workspace) zum Aktualisieren von NuGet Content-Paketen (Kurzanleitung siehe Ende des Artikels).

Was ist das Problem?

Das Problem tritt nur mit NuGet Paketen auf, die Dateien in das Projekt hineinkopieren, wie z.B. JavaScript Bibliotheken, Views, etc. Ich nenne diese Pakete „Content-Pakete“. Pakete, die nur DLLs referenzieren, sind nicht betroffen.

Beim Installieren eines Content-Pakets kopiert NuGet die Content-Dateien in dein Projekt und fügt die Dateien korrekt der Versionskontrolle hinzu.

Beim Update eines Content-Paketes geht NuGet vor wie immer:

Zunächst werden das Paket und alle dazugehörigen Dateien gelöscht; auch die in das Projekt kopierten Content-Dateien und alle DLL-Referenzen zu dem Paket entfernt. Daraus ergibt sich dann eine Anzahl von „Ausstehenden Löschungen“.

Im nächsten Schritt installiert NuGet dann die neue Version vom Paket, als wäre es die Erstinstallation: Das Paket landet im Paket-Verzeichnis, DLL-Referenzen werden hinzugefügt, und die Content-Dateien werden in das Projekt kopiert und als neue Dateien der Versionskontrolle hinzugefügt.

Hier fangen die Probleme an:
Die Content-Dateien sind immer noch als „Ausstehenden Löschungen“ in deinem Workspace markiert. Wenn NuGet versucht, genau diese Dateien wieder dem Projekt hinzuzufügen, stolpert der Team Explorer: Er erlaubt nicht, eine Datei der Versionskontrolle hinzuzufügen, für die im gleichen Workspace noch eine ausstehende Löschung besteht, sondern erwartet, dass man die Löschung erst eincheckt, und anschließend die Datei als neue Datei eincheckt. Sinnvoller wäre es, wenn der Team Explorer die ausstehende Löschung automatisch in eine ausstehende Änderung umwandelt.

Daraus entsteht das nächste Problem:
NuGet scheint von dem Fehler im Team Explorer nichts mitzubekommen, und kopiert die aktualisierten Content-Dateien auf die Festplatte und fügt sie dem Projekt hinzu (und meldet keine Fehler). Deshalb sieht im Solution Explorer alles gut aus: Alle Dateien sind dort wo sie hingehören, das Projekt kompiliert. Der Team Explorer sieht das anders: In der Ansicht „Ausstehende Änderungen“ sind die ausstehenden Löschungen immer noch vorhanden. Wenn man diesen Umstand nicht bemerkt und die offenen Änderungen eincheckt ist das Projekt für Alle defekt.

Falls man das Problem noch rechtzeitig bemerkt und versucht die ausstehenden Löschungen rückgängig zu machen, hat man auch verloren: Der Team Explorer weigert sich, die Löschungen rückgängig zu machen, da dadurch bestehende Dateien überschrieben werden würden… die Dateien die NuGet beim Update versucht hat in das Projekt hinzuzufügen!

Das Chaos manuell wieder aufzuräumen, und dabei sicherzustellen, dass man auch die aktuellen Versionen der Dateien an der richtigen Stelle hat, macht keine Freude.

Lösung

Die Problemlösung ist einfach: Benutze einen Server Arbeitsbereich zum Aktualisieren von Content- Pakete;, nur die lokalen Arbeitsbereiche sind betroffen (zumindest in der aktuellen NuGet Version 2.8.60318.667). Für meine tägliche Arbeit bevorzuge ich einen lokalen Arbeitsbereich, daher benutze ich einen zweiten Arbeitsbereich zur Aktualisierung von Content-Paketen.

Anlegen eines neuen Server Arbeitsplatzes in Visual Studio

  1. Datei > Quellcodeverwaltung > Erweitert > Arbeitsbereiche > Hinzufügen > Erweitert
  2. Sprechenden Namen eingeben, z. B. “Server Arbeitsbereich für Content-Package Updates”
  3. “Server” bei “Speicherort” auswählen
  4. OK

clip_image002

Neues zu TouchDevelop (jetzt auch für Minecraft)

Über TouchDevelop haben wir nicht nur hier, sondern auch auf Entwicklerkonferenzen berichtet. Wir haben gezeigt, wie einfach es ist, damit Anwendungen und Spiele auf sämtlichen Devices für sämtliche Devices zu entwickeln und als besonderes Highlight eine eigene (in TouchDevelop entwickelte) Bibliothek vorgestellt, mit der sich sogar ein Lego MindStorms Roboter programmieren ließ.

Mittlerweile nimmt aber die Aussage “für sämtliche Devices” ganz neue Dimensionen an. Statt einfach nur noch als HTML5 Anwendung in allen Browsern zu funktionieren, oder als App exportiert in den Windows (Phone) Store exportiert zu werden, sind inzwischen folgende Möglichkeiten hinzugekommen:

  • Export to App Studio (Windows, Windows Phone)
  • Export to Cordova Apps (iOS, Windows, Android)
  • Export to Azure Web Apps (Node.JS)
  • Export to Raspberry PI (Node.JS)
  • Export to Web App or Office Mix

Es gab vor längerem bereits Tutorials, die gezeigt haben, wie sich für den Arduino programmieren lässt (inkl. Simulation auf dem Touchdisplay eines Smartphones). Ganz neu hinzugekommen ist die Unterstützung für das BBC Projekt micro:bit.

Nachdem zurzeit allerdings Minecraft in aller Munde ist (es scheint sich seit dabei zu einem Signature-Game für Microsoft zu entwickeln), ist folgendes besonders interessant: Mit MinecraftEDU und MinecraftPI werden Versionen angeboten, die es möglich machen, Scripte für Minecraft mittels TouchDevelop zu entwickeln.

Hier ein Beispiel für den Bau einer Pyramide:

PyramidCraft

 

Ich würde sagen: Das klingt doch mal nach einem spannenden Wochenend-Projekt, oder? Hier der Link zur Dokumentation.

Und nun viel Spaß!

KEIN Aprilscherz: Visual Studio 2015 Enterprise

Gestern hat Microsoft bekannt gegeben, dass mit der neuen Version 2015 geplant sei, die SKUs Premium und Ultimate zusammenzufassen. Die neue Edition wird Enterprise heißen. Obwohl sie damit faktisch alle Ultimate Features enthält (wie z.B. Intellitrace), bedeutet das nicht, dass alle Premium Abonnenten tiefer in die Tasche greifen müssen.

Im Gegenteil: Der Neuerwerb einer Enterprise Lizenz wird sogar günstiger sein, als zuvor Visual Studio Premium 2013. Die jährlichen Kosten für die Erneuerung sind identisch.

Visual Studio 2013 (New / Renewal in USD)

Visual Studio 2015 (New / Renewal in USD)
Ultimate mit MSDN 13.299,00 / 4.249,00 1)
Premium mit MSDN 6.119,00 / 2.569,00 2)
Professional mit MSDN 1.199,00 / 799,00 3)
Enterprise mit MSDN 5.999,00 / 2.569,00
Professional mit MSDN 1.199,00 / 799,00

 

 

Auch Mitglieder des Microsoft Partner Networks profitieren von dieser Änderung. Im Oktober diesen Jahres wird sie automatisch im MPN Partner Licensing ausgerollt!

Kleine Freuden, die das Leben erleichtern

Manchmal sind es die einfachen Dinge, die uns am meisten begeistern, und oft brauchen sie auch gar nicht viele Wort, um beschrieben oder angekündigt zu werden. Deswegen also auch ganz kurz und bündig und ohne viele Umschweife:

Es wird im Team Foundation Server 2015 möglich sein, in allen Queries mit dem Parameter @CurrentIteration auf den aktuellen Sprint zu referenzieren!

TFS CurrentIteration

 

Das mag im ersten Moment nicht nach viel klingen, aber ich bin mir sicher, dass eingefleischte TFS Benutzer wenigstens einmal laut “Hurra” gerufen haben. Vorbei sind die Zeiten in denen Queries nach jedem Sprint angepasst werden mussten um eine aktuelle Übersicht zu haben, oder in denen alternative Werte herangezogen werden mussten um den gegenwärtigen Sprintstatus zu sehen.

Die Änderung wurde zusammen mit einigen weiteren Anpassungen im Bereich Kanban Karten, der Anzeige von Bugs im Taskboard und Syntax Highlighting für XML, Sass, Objective-C und R im Webeditor, in einem vor kurzen veröffentlichen Blogeintrag bekannt gegeben. Die weiteren Änderungen werden vorerst im Visual Studio Online (VSO) eingepflegt, aber sollten auch in die finale Version des TFS 2015 Einzug erhalten.

Über die Autoren

Christian Jacob ist Leiter des Geschäftsbereiches Softwarearchitektur und -entwicklung und zieht als Trainer im Kontext der .NET Entwicklung sowie ALM-Themen Projekte auf links.

Marcus Jacob fokussiert sich auf die Entwicklung von Office-Addins sowie Windows Phone Apps und gilt bei uns als der Bezwinger von Windows Installer Xml.

Martin Kratsch engagiert sich für das Thema Projektmanagement mit dem Team Foundation Server und bringt mit seinen Java- und iOS-Kenntnissen Farbe in unser ansonsten von .NET geprägtes Team.

Aktuelle Kommentare

Comment RSS