codefest.at [MS]: Neue MSDN Vorteile mit Visual Studio 2015

Mit Visual Studio 2015 gibt es einige zusätzliche oder erweiterte Vorteile bei der MSDN. Diese möchte ich hier kurz zusammenfassen:

  • Visual Studio Enterprise mit MSDN:
    wird mit den Vorteilen und “Werten” des ehemaligen Visual Studio Ultimate ausgestattet. Daher steigt auch das Azureguthaben auf 115€ (150 USD) pro Abrechnungsmonat (dieser beginnt am Tag der ersten Aktivierung, wenn also z.B.: am 25. August der Vorteil erstmalig aktiviert wird läuft der Abrechnungsmonat bis zu 24. des Folgemonats).
    Wenn Sie mehr erfahren möchten was mit dem Azure Guthaben alles machen können – besuchen Sie einen unserer kostenlosen Azure Hands-On Workshops.
  • Visual Studio Enterprise mit MSDN & MSDN Platforms (Retail, VL, BizSpark, MPN):
    PowerBI Pro ist ein Cloud-basiertes Analytics Service welches die Daten Ihres Unternehmens in ansprechende visuelle Darstellungen umwandelt. Mit Power BI können Sie Ihre Daten sammeln und strukturieren und das Augenmerk auf die für Sie wichtigsten Punkte legen. Bleiben Sie auf dem Laufenden, erkennen Sie Trends, und bringen Sie Ihr Geschäft voran. Stellen Sie Power BI Fragen wie “Aus welcher Region kommen die Käufer des Produktes XY?” und Sie bekommen eine grafisches Dashboard welches Ihnen die Werte für Ihren Webshop zeigt. Natürlich lassen sich auch Erkenntnisse aus Application Insights als Datenquelle nutzen um Applikationen und Nutzerverhalten in Dashboards zu analysieren. Probieren Sie es aus ….
  • Visual Studio Enterprise mit MSDN (Retail, VL, MPN):
    Eine Lizenz von inteGREAT4TFS and SmartOffice4TFS der Firma eDevTech. eDevTech ist ein langjähriger Visual Studio Partner im Bereich des Anforderungsmanagements. Nähere Informationen zu den Produkten und zum MSDN Vorteil finden Sie auf der Ankündigungsseite.
  • alle Visual Studio Editionen (Retail, VL):
    12-monatiges Abonnement für hochwertige Onlinetrainings von Pluralsight. MSDN Abonennten können auf eine Auswahl an Pluralsight Trainings zugreifen. Die Anzahl der Trainings die kostenlos konsumiert werden können hängt von der Visual Studio Edition ab und variiert zwischen 15 und 30 Kursen.
    Zusätzlich bietet Microsoft Online-Trainings in der Microsoft Virtual Academy an.

Eine Übersicht zu allen MSDN Vorteilen finden Sie hier.
Manche MSDN Vorteile sind abhängig vom Bezugsweg der Visual Studio mit MSDN Lizenz. Retail (Kauflizenz, Fachhandel), VL (Kauflizenz, Volumenlizenzierung), MPN (Partnerprogramm), BizSpark (Startup-Programm), …

Hinweis zur Rechtsverbindlichkeit dieser Informationen:
Die in diesem Artikel enthaltenen Informationen sind Hinweise, die das Verständnis hinsichtlich der Microsoft Produkte und dessen Lizenzierung verbessern sollen. Microsoft weist ausdrücklich darauf hin, dass diese Informationen keinen rechtsverbindlichen Charakter haben, sondern als erklärende Informationen zu verstehen sind.
Die in diesem Artikel enthaltenen Informationen oder Aussagen enthalten in Bezug auf allfällige Verträge zwischen Ihnen und einer Microsoft Gesellschaft keinerlei rechtsverbindlichen Charakter und dürfen auch nicht zur Auslegung von solchen Verträgen beigezogen werden. Rechtsverbindlich sind einzig die gültig abgeschlossenen Vertragsdokumente.
Fehler und Irrtümer vorbehalten.

Martin Richter: TFS-2015 inplace Upgrade in ca. 30 Minuten

Heute habe ich mir mal Zeit genommen ein Upgrade meines TFS-2013 auf TFS-2015 durchzuführen.
Mein Windows 2008R2 Server war mit SQL 2012 Server direkt bereit für das Update.

Summa summarum etwas mehr als 30 Minuten bis ich den folgenden Bildschirm hatte.

TFS-Upgrade3

Die Schritte waren:

  1. „Extra“ Backup des TFS
  2. Windows Update für virtuelle Maschine explizit noch mal ausführen.
  3. Snapshot der virtuellen Maschine ausführen.
  4. TFS-2015 Installation ausführen
  5. Beim automatischen Ausführen des Upgrade Wizards wurde erkannt, dass Powershell 3.0 nicht installiert ist. Sprich das Windows Management Framework 4.0 fehlte.
  6. Nach der Installation war leider ein Neustart fällig und der Upgrade Wizard wurde dadurch abgebrochen.
  7. Dann dauerte es leider etwas bis ich den Upgrade Wizard wieder „gefunden“ habe… 😉
    TFS Management Console starten -> Anwendungsebene auswählen -> Komponentenkonfiguration auswählen und im Konfigurationscenter dann Upgrade auswählen
  8. Abschließend die Reste des TFS und des alten Datei Caches aus „C:\Program Files\Microsoft Team Foundation Server 12.0“ entfernen.
  9. Done!

 


Copyright © 2010 Martin Richter
Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.
(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)

DotNet Community Austria: Another Academic Writing Company Is Closely Inspected. Loser or Profy?

Grade Miners is a expert academic company which has drawn the vast number of devotees. Learners around the world entrust their learning challenges to the academic writing agency. What is that that beckons them above all? You are welcome to learn more about beneficial offers given at this particular company.

Since this is an old-time service, it makes available a wide choice of services. Generally, these comprise essay writing, together with all kinds of essays any individual may deal with. What is more, the it has text checkup and correction as follow-up opportunities. The number of majors a company Buyers are free to fix on almost 50 topics. write my essay or me Additionally, a customer has a chance to fit the type of work to additional qualities such as paper style, quality classification, size as well as priority of the paper. In any case, the resource promises attractive line on prices intensified with lucrative take-offs and various customer-friendly programs available for everyone who makes an order.

Rock-solid warranties and high-quality essay writing are never-changing company’s strivings

Students who have ever bought papers from Grademiners.com are satisfied with its security and professional conduct. Above all else this writing agency aimed at high standard of the work it does. that each order is likely to be authentic. If you are interested how a resource sticks to anti-plagiarism campaign, you’ll offered a explicit reasoning. content authenticity is achieved by special program together with fastidious editors. Another useful distinction that lets the company stand out from the crowd is a well-timed mailing of client’s academic project. Absolute absence of order delays confirms fail-safety of the service. Personal data protection can’t be questioned either. Students’ personal info is well-protected from unwanted access. Even so it’s half of the story. This scope of promises covers money-back assurance as well as free paper revision for a period of two weeks.

This writing service is also known to assamble a professional personnel of versatile writers who are knowledgable both in essay writing together with other writing styles. Once – customer has made – order they will adore teaming with individually assigned specialist assigned in view of order specifications. The same can be said about customer support managers that one may assign complications and get expert assistance around-the-clock. All advantages rolled into one make a service – premium one.

Essay Writing Service Review: Prices and Offers

Purchasers may determine the charge of the paper by clicking on the order form.There you will see a price calculator and see the cost for writing or editing job.The aspects that determine the the amount of money involve the following: academic level, immediacy and the number of pages. Submitting your order, you need to specify clear instructions for work to make sure that your writer for hire gets the point.Clients might buy a paper ahead of time to enjoy lower price.

Grademiners.com brings a lot of rake-offs. Students achieve 10% off the first ordered paper and 10% off the order cost to the credit balance. standing customers get 5% discounts and get involved in a loyalty programthat essay writing gives a 5% off each order price to the balane. By this, every purchaser receives Birthday and different holidays discounts.

Customer support quality and site usability

The support team could be easily reached via various communication channels. They are ready to help you day-and-night.

The site of essay writing is convenient to use. The facility of the webpage is apparent by the fact that a client directly finds out where he/she can receive all the necessary information. By the dint of easy-to-use navigation, purchasers might feathery look trough all the sections present on the website and get the answers to the uncertainties about the ordering process, the costs, the company itself, examine a branch of customers’ experiences and more. A good way for an immediate contact with support team is a live chat on the available at every page of the website that allows you to to talk to the support team and get an immediate answer – their answers are very quick. In case ifclients did not findall the necessary information on the webpage, clients might to call up or send an email (the phone number and the address could be found on the website). As for the website appearance, it is rather pleasing to the eye, looks present-day and soft.

Holger Schwichtenberg: E-Book zu OR-Mapping mit Entity Framework erschienen

Ein aktuelles deutschsprachige Fachbuch zu Microsofts ORM-Werkzeug Entity Framework 6.1 konnte nur im E-Book-Selbstverlag erscheinen, nachdem es unter den verbliebene IT-Buchverlagen nur noch wenig Interesse an Microsoft-Entwicklerthemen gibt.

Marco Scheel: Links for 2015-08-31 [del.icio.us]

codefest.at [MS]: Training: Front-End Entwicklung mit JavaScript, AngularJS und Visual Studio 2015

Haben Sie noch einen guten Überblick zu Technologien in der Webentwicklung ? Können Sie die zahlreichen “Technologien”, Frameworks, Tools auch effizient in einer Entwicklungsumgebung zusammenfassen ? Wie geht Visual Studio 2015 mit diesem Thema um ?

Der Microsoft Gold Certified Partner TechTalk bietet einen kostenpflichtigen Workshop zum Thema Front-End Entwicklung mit JavaScript, AngularJS und Visual Studio 2015 an welcher Fragen in diese Richtung beantwortet.

Dieser Workshop gibt eine Einführung in die professionelle Entwicklung von komplexen Client-Applikationen mit JavaScript und AgularJS, unter der Verwendung von Visual Studio 2015 und ASP.NET 5. In den letzten Jahren hat die Popularität und Verbreitung von JavaScript als Programmiersprache der modernen Web-Plattformen stark zugenommen, und spätestens seit dem Siegeszug von HTML5 ist die Entwicklung mit JavaScript auch für klassische Enterprise-Entwickler nicht mehr zu ignorieren. Microsoft hat in Visual Studio 2015 und ASP.NET 5 die populärsten Tools und Frameworks für JavaScript mit dem .NET Stack integriert.

Wenn Sie sich unabhängig zum Workshop in dieses Thema schon etwas einlesen möchten hat Rainer Stropek (MVP) einen guten Artikel im aktuellen windows.developer Magazin verfasst. Der Artikel: gulp, Bower und npm - Visual Studio lernt neue Tricks für Webentwicklung (Autor: Rainer Stropek).

Fabian Deitelhoff: Gelesen + Verlosung: Macht, was ihr liebt!

Nach langer Zeit ist es mal wieder Zeit für eine Rezension und auch direkt für eine Verlosung. Dieses Mal geht es um das Buch Macht, was ihr liebt! von Anja Förster und Peter Kreuz. Das Buch befand sich schon lange auf meiner Liste und mindestens genau so lange auf meinem Bücherstapel, bis ich endlich genug Zeit gefunden habe, es zu lesen. Einmal angefangen, konnte ich es dann auch schwer weglegen. :)

Das Buch im Überblick

Macht, was ihr liebt! – 66 1/2 Anstiftungen das zu tun, was im Leben wirklich zählt

Randomhouse, 03/2015, 208 Seiten, Deutsch
ISBN: 978-3-570-55265-0, 12,99 Euro

Sprache: Deutsch
Ausstattung: Paperback, Klappenbroschur
E-Book: Auch als E-Book verfügbar für 9,99 Euro
Probekapitel: Leseprobe ansehen
Gesamtnote: sehr gut – 4,0 von 5 Sternen
Leseempfehlung: Ja

Macht, was ihr liebt! 66 1/2 Anstiftungen das zu tun, was im Leben wirklich zählt

Der Inhalt

Mich hatte schon der Titel angesprochen und sehr neugierig gemacht, was es mit den vielen Anstiftungen auf sich hat. Die beiden Autoren waren mir von den Namen und meiner Twitter Timeline her zwar bekannt, eines ihrer vorherigen Bücher hatte ich aber nicht gelesen.

“Macht, was ihr liebt!”, wer träumt nicht davon? Nicht wenige würden sicherlich vieles dafür stehen und liegen lassen, genau das zu tun. Die 66 1/2 Anstiftungen, in Form von mehr oder weniger umfangreichen Essays, erzählen Geschichten und Möglichkeiten, wie genau das erreicht werden kann. Die Geschichten können auch gleichzeitig als Tipps aufgefasst werden, wie Veränderungen angegangen und letztendlich umgesetzt werden können, um mit mehr Spaß und Leidenschaft Dinge zu tun, die für einen selbst (mehr) Sinn ergeben.

„Such die Chance, nicht die Hindernisse! Brecht die Regeln! Gebt mehr, als ihr nehmt! Macht, was ihr liebt! Lasst alles andere sein! Seid besser die erstklassige Version eurer selbst als die zweitklassige Version eines anderen.“

Dieses Zitat, von der Rückseite des Buchs, beschreibt recht gut, in welche Richtung die Geschichten gehen. Hin und wieder hätte ich mir etwas mehr Tiefe bei den Essays gewünscht. Vielleicht einige Texte weniger und dafür mehr Inhalt.

Aufgeteilt sind die Geschichten in mehrere Kapitel, die jeweils eine andere Hauptbotschaft haben und als Kategorisierung dienen:

  • Seid außergewöhnlich
  • Seid leidenschaftlich
  • Seid unbequem
  • Seid anspruchsvoll
  • Seid wertvoll

Darin sind alle Geschichten eingeordnet. Mehr möchte ich an dieser Stelle aber auch nicht verraten. :)

Fazit & Bewertung

Am Ende habe ich mich trotzdem nur für 4,0 von 5 Sternen entschieden. Versteht mich nicht falsch, ich empfehle das Buch auf jeden Fall weiter, da ich es für eine absolut lohnenswerte Zeitinvestition halte. Bei mir haben die meistens Geschichten ein heftiges Nicken und die Lust auf Veränderung bewirkt, beziehungsweise aufgezeigt, was ich nicht möchte.

Auf der anderen Seite ist da die fehlende Tiefe bei einigen Essays und die Tatsache, dass viele Tipps und Tricks nur umsetzbar sind, wenn Kapital vorhanden ist. Nicht jeder möchte gleich alles hinschmeißen. Selbst die Möglichkeit für kleinste Veränderungen ist nicht immer gegeben. Damit möchte ich aber auch nicht sagen, es nicht vielleicht doch zu versuchen. Hier einen wirklich Rat zu geben fällt mir schwer, weshalb ich es gleich ganz sein lasse. :)

Bei Interesse beziehungsweise Neugierde würde ich das Buch einfach lesen und schauen, welche Tipps, Tricks und Hinweise für einen selbst darin verborgen sind.

Eigentlich hatte ich noch vor, meine Lieblingsstory aus dem Buch anzusprechen. Ich konnte mich aber absolut nicht für ein Essay entscheiden. Zwei Botschaften sind mir aber besonders in Erinnerung geblieben.

  1. Das Leben sollte kein Zufallsprodukt sein
  2. Weniger konsumieren, mehr kreieren

Bei beiden kann ich mich absolut anschließen. Insbesondere letzteres fällt mir bei Menschen in meiner Umgebung immer wieder auf. Alle wollen etwas machen, leisten, erreichen, schaffen, hinbekommen, realisieren, … Die Liste ließe sich endlos weiterführen. Und trotzdem ist der überwiegende Teil den Großteil des Tages völlig planlos und tatenlos. Das finde ich sehr schade, denn Änderungen sehen anders aus.

Zur Verlosung

Und wieder einige obligatorische Informationen zur Verlosung. Das Buch habe ich dieses Mal selbst gekauft und einmal gelesen. Es ist somit in einem sehr guten Zustand.

Das Buch wird von mir verschickt. Alle Kosten übernehme selbstverständlich ich. Bis auf eine Adresse brauche ich dann auch nichts weiter. Dazu melde ich mich allerdings noch mal beim Gewinner beziehungsweise der Gewinnerin per E-Mail, die beim Kommentar mit angegeben werden muss. Die E-Mail Adresse ist natürlich nur von mir einsehbar.

Wer gewinnen möchte, hinterlässt bitte einen Kommentar, warum er oder sie das Buch gerne hätte. Das muss nichts Besonderes sein. Ich möchte nur gerne vermeiden, dass Kommentare auftauchen, die offensichtlich dadurch entstanden sind, das einmal von links nach rechts mit dem Gesicht über die Tastatur gerollt wurde. :-)

Aus allen Kommentaren fische ich dann per Zufall einen heraus, so wie ich das bei den letzten Verlosungen auch gemacht habe. Die Verlosung läuft von heute, den 31. August 2015 bis zum 07. September um 12:00 Uhr. Die Teilnahme ist ab 18 Jahren möglich und der Rechtsweg ist wie üblich ausgeschlossen.

Bei Fragen zum Buch oder sonstigen Angelegenheiten zur Verlosung freue ich mich immer über Kommentare und Nachrichten.

Vielen Glück allen!

Karsten Kempe: TFS 2015 – Agile Features im Überblick

VisualStudioLogoSeit Anfang August steht die erste Version des Team Foundation Server 2015 zum Download bereit. Einige Neuerungen habe ich bereits in meinen letzten Beiträgen angesprochen, aber noch keinen generellen Überblick über die Features gegeben. Einige weitere Details des TFS 2015 RTM erwarten Euch in diesem Post – plus einem kleinen Ausblick auf die nächsten Updates.

Ich beschränke mich in diesem Beitrag erstmal auf die Features für agiles Development. Natürlich gibt es noch zahlreiche andere Neuerungen im TFS 2015, wie z. B. das neue Build-System, Projekt-Renaming, Git-Verbesserungen oder einfach zahlreiche Bug-Fixes und Performance Verbesserungen.

In den folgenden Übersichten findet ihr die neuesten Features des TFS 2015 RTM und auch einen Ausblick auf ein mögliches Update:

TFS2015 Backlog Management FeaturesTFS2015 Kanban Board Features TFS2015 Process Template Enhancements TFS2015 Work Item EnhancementsAn dieser Stelle möchte ich meinem MVP-Kollegen Vinicius Moura (@vinijmoura) und dem ALM Ranger Ricardo Serradas (@ricardoserradas) aus Brasilien danken, die eine Übersicht über die aktuellen Features zusammengetragen haben und diese gerne mit uns hier in Deutschland teilen. Muito obrigado!

Manfred Steyer: EcmaScript 6 mit Gulp in Visual Studio Code

Eine der tollen Eigenschaften von Visual Studio Code ist, dass man damit sehr schnell produktiv ist und trotzdem eine leichtgewichtige Programmierumgebung, ähnlich Sublime, hat. Um zum Beispiel über Visual Studio Code EcmaScript-6-Dateien mit Babel nach EcmaScript 5 zu kompilieren, bedarf es lediglich die Konfiguration eines Tasks. Der folgende MSDN-Artikel geht darauf ein. Zusätzlich zeigt er die jsconfig.json-Datei, mit der Visual Studio Code für ES6 konfiguriert wird. Um sämtliche Dateien in die Kompilierung einzuschließen, würde ich die Eigenschaft files ersatzlos weg lassen.

http://blogs.msdn.com/b/vscode/archive/2015/07/06/vs-code-es6.aspx

Manfred Steyer: AngularJS 1.x mit TypeScript in Visual Studio Code nutzen

Visual Studio Code bietet sich aufgrund seiner Leichtgewichtig für clientseitige Web-Projekte als Alternative zu Sublime und Co. an. Dazu kommt, dass Visual Studio Code eine direkte Unterstützung für TypeScript bringt. In dieser Schritt-für-Schritt-Anleitung zeige ich, wie man das alles mit AngularJS 1.x zusammen nutzt.

Werkzeuge

Bevor wir loslegen, sollte man sicherstellen, dass die folgenden Werkzeuge installiert sind:

  • NodeJS (nodejs.org)
  • TypeScript: npm install -g typescript
  • TypeScript Definition Manager zum Laden von Type Definitionen für TyepScript: npm install -g tsd
  • JSPM, Package Manager: npm install jspm

Einrichten der Lösung

Die folgende Schritte beschreiben, wie man ein neues Projekt mit Angular und TypeScript in Visual Studio Code einrichten kann:

  • Neues Verzeichnis anlegen
  • Im Verzeichnis package.json anlegen: npm init. Die vorgeschlagenen Standardeinstellungen sind ok.
  • JSPM initialisieren: jspm init. Bei der Frage nach dem Transpiler sollte man angeben, keinen nutzen zu wollen. Es kommt zwar TypeScript zum Einsatz, aber die Handhabung übernimmt Visual Studio Code. Ansonsten kann man die Standardeinstellungen nutzen.
  • Angular via JSPM beziehen: jspm install angular. Dies führt auch zu einem Mapping in der Datei config.js.
  • Type Definitionen für Angular beziehen: tsd install angular
  • Konfigurationsdatei tsconfig.json für TypeScript einrichten:
{
    "compilerOptions": {
        "target": "ES5",
        "module": "amd",
        "sourceMap": true
    }
}
  • Ordner app anlegen und darin die Datei demo-vm.ts einrichten:
// demo-vm.ts
export class DemoVM {
    info;
    constructor($log) {
        $log.log("DemoCtrl has been created ...");
        this.info = "Hallo Welt!";
    }
}
  • Datei app.ts im Ordner app erzeugen:
///<reference path="../typings/angularjs/angular.d.ts" />
// app.ts
import * as angular from 'angular';
import {DemoVM} from 'demo-vm';

var app = angular.module('angular-es6', []);

app.controller('demoVM', DemoVM);

angular.element(document).ready(function() {
  angular.bootstrap(document, ['angular-es6']);
});
  • Datei index.html im Root der Anwendung anlegen:
<!--index.html -->
<!doctype html>
<html>
  <body>
    <div class="container" ng-controller="demoVM as vm">
        <h1>Angular-ES6-Demo</h1>

        <p>{{vm.info}}</p>

        <script src="jspm_packages/system.js"></script>
        <script src="config.js"></script>
        <script>
            System.import('app').catch(function(err) { console.error(err); });
        </script>
  </body>
</html>
  • Die Datei config.js anpassen, sodass sie mit dem Kommentar global System beginnt. Dies definiert die Variable System als globale Variable und unterdrückt somit eine TypeScript-Warnung. Darüber hinaus ist die Zeile, welche mit dem Kommentar !! markiert ist, einzufügen:
/* global System */
System.config({
  baseURL: "/",
  defaultJSExtensions: true,
  transpiler: "typescript",
  paths: {
    "*": "app/*.js", // !!
    "github:*": "jspm_packages/github/*",
    "npm:*": "jspm_packages/npm/*"
  },

  map: {
    "angular": "github:angular/bower-angular@1.4.5"
  }
});
  • Anwendung mit STRG+b kompilieren.
  • Visual Studio Code gibt nun an, dass ein Task für den Build Prozess zu erstellen ist. Vorschlag annehmen, und den darin zu findende Eigenschaft args auf ein leeres Array setzen. Das führt dazu, dass sämtliche Dateien kompiliert werden. Der Task sollte sich danach wie folgt gestalten:
{
    "version": "0.1.0",

    // The command is tsc. Assumes that tsc has been installed using npm install -g typescript
    "command": "tsc",

    // The command is a shell script
    "isShellCommand": true,

    // Show the output window only if unrecognized errors occur.
    "showOutput": "silent",

    // args is the HelloWorld program to compile.
    "args": [],

    // use the standard tsc problem matcher to find compile problems
    // in the output.
    "problemMatcher": "$tsc"
}
  • Ab nun kann das Projekt mit STRG+b kompiliert werden.
  • Beim Ausführen des Projektes sollte man nun mit Hallo Welt begrüßt werden.

Code-Inside Blog: FAKE: Running MSTest Tests with FAKE without knowing a tiny bit of F#

This is a follow-up to my xUnit FAKE post “FAKE: Running xUnit Tests with FAKE without knowing a tiny bit of F#”.

Running MSTests with FAKE

Running MSTests is not a big difference to run xUnit tests. The biggest difference: You don’t need to pull a test runner via NuGet, because the typical Visual Studio installation will ship with the MSTest runner.

MSTest Test Project

The actual test is just stupid, but should work for the demo:

[TestClass]
public class FoobarMsTests
{
    [TestMethod]
    public void DoAStupidTest()
    {
        Assert.IsTrue(true);
    }
}

Adding the test to the build.fsx script

This time I will only show the important parts for the tests (skipping the targets from the first post).

// include Fake lib
open Fake.MSTest
...

// Properties
...
let artifactsTestsDir  = "./artifacts/tests/"

// Targets
Target "BuildTests" (fun _ ->
trace "Building Tests..."
!! "**/*Tests.csproj"
  |> MSBuildDebug artifactsTestsDir "Build"
  |> Log "TestBuild-Output: "
)

Target "RunTests" (fun _ ->
    trace "Running Tests..."
    !! (artifactsTestsDir + @"\*Tests.dll") 
      |> MSTest (fun p -> {p with ResultsDir = artifactsTestsDir })
)
...
// Dependencies
"Clean"
  ==> "BuildApp"
  ==> "BuildTests"
  ==> "RunTests"
  ==> "Default"

// start build
RunTargetOrDefault "Default"

The properties are more or less the same as in the xUnit sample. We still use the “artifacts”-property, which points to the build output of the test project:

let artifactsTestsDir  = "./artifacts/tests/"

This path is used in the build target. With this call I build all projects that ends with Tests.csproj.

Target "BuildTests" (fun _ ->
trace "Building Tests..."
!! "**/*Tests.csproj"
  |> MSBuildDebug artifactsTestsDir "Build"
  |> Log "TestBuild-Output: "
)

Now we need to invoke the test runner. FAKE already have a MSTestHelper, so this is really trivial. MSTest can be invoked with a parameter called “ResultsDir”, where we store the results. In the xUnit-world this property was called “OutputDir”.

Target "RunTests" (fun _ ->
    trace "Running Tests..."
    !! (artifactsTestsDir + @"\*Tests.dll") 
      |> MSTest (fun p -> {p with ResultsDir = artifactsTestsDir })
)

Pointed to the test directory and FAKE will do all the hard work.

As you can see, running MSTests is not that different from running xUnit tests.

You can find the complete sample & build script on GitHub

BTW: To be clear, I prefer xUnit over MSTest, but in some enterprise projects or with an existing environment MSTest could be a simpler entry point to unit testing.

Holger Sirtl: Azure News on Friday (KW35/15)

Auch diese Woche gab’s wieder viele Nachrichten zur Microsoft Azure Plattform. Hier sind nähere Infos dazu…

Aktuelle Neuigkeiten

Datum Nachricht
27.08. Announcing the Azure SDK 2.7.1 for .NET
Azure SDK 2.7.1 für .NET mit verbessertem VS2013 Support, verbesserten HDInsight und ARM Tools und AZCopy 3.2.0
27.08. New Azure SQL Database offerings add capabilities to scale data up and out
Neuerungen bei Azure SQL Database neue Tiers (P4 und P11 bis 1TB!) und Basic und Premium für Elastic Databases
27.08. Announcing Great New SQL Database Capabilities in Azure
Zusammenfassung der Neuerungen in Azure SQL Database (P4, P11 Tiers, neue Tiers in Elastic Pools)
27.08. Azure AD Privileged Identity Management: Security Wizard, Alerts, Reviews & more!
Neues in Azure AD Premium - Security Wizard, Security Dashboard, Security Alerts, Security Reviews etc.
26.08. Exploring your Adobe Analytics data in Power BI
Adobe Analytics Daten in PowerBI visualisieren und auswerten
25.08. Azure Premium Storage expanding in more regions
Weitere Regionen für Premium Storage in Planung (unter anderem Nordeuropa)
25.08. Azure Media Services Java SDK gets a major update
Neues Azure Media Services SDK für Java mit AES und PlayReady Dynamic Encryption für VOD oder Live Streaming
25.08. Get the DocumentDB SQL query cheat sheet
Hilfestellung für alle, die Abfragen an Azure DocumentDB stellen: das SQL Query Cheat Sheet zum Ausdrucken
25.08. SQL Database Homepage
Startseite zu SQL Database auf azure.com
25.08. Traffic Manager Homepage
Startseite zum Azure Traffic Manager auf azure.com
25.08. Azure CDN Homepage
Startseite zu Azure CDN auf azure.com
24.08. Azure Backup update – New features in IaaS VM backup support
Azure Backup jetzt mit Backup bis 16 Datendisks, Aufbewahrung bis zu 99 Jahre, besseres Monitoring etc.
24.08. New Azure IT Workload: Web-based, line of business application
Gute Anleitung bzw. Blueprint zum Aufsetzen einer LOB-Architektur und einer entsprechenden Entwicklungsumgebung in Microsoft Azure
21.08. Cloud Foundry on Azure Preview 2 Now Available
Cloud Foundry on Azure Preview 2, basierend auf dem Bosh-Init Framework, jetzt verfügbar

Neue Videos

Datum Nachricht Video
27.08. Microsoft Azure CDN Updates for July 2015 with Anton Kucer
Azure Friday Folge zu den Neuerungen im Azure CDN im Juli 2015 (z.B. Filterung pro Land, Reporting, ...)
27.08. Inside AutoRest with David Justice
Azure Friday Folge zu AutoRest - Generierung von Code und SDKs auf Basis von Swagger Endpoints z.B. in API Apps
21.08. Episode 183: Azure WebJobs Update with Pranav Rastogi
Neues zu Azure WebJobs - Open Source SDK, neue Trigger (zeitgesteuert, File-basiert etc.)

codefest.at [MS]: Azure Websites on Open Source Event

Am 1. September findet ein sehr interessantes Online-Event zum Thema Azure Websites auf Basis von Open Source statt: Azure Websites on OpenSource

image

Dies ist das ist zweite Webinar aus der OpenSource on Azure Reihe. Das Event liefert Einblicke in Azure Websites und wie PaaS genutzt werden kann um Standard-Webs wie auch andere Websysteme wie verschiedene Linux-Lösungen, Docker, MongoDB, Hadoop oder Programmiersprachen wie Java, Python, PHP oder Ruby einzusetzen.

Zur Abwechslung ist die Zeitzone des virtuellen Events mal nicht in Pacific Standard Time, sondern – nachdem von West Europe organisiert - in Central European Time angegeben. Das bedeutet das Event startet in unserer Zeitzone tatsächlich um 10:00 und dauert bis 11:30.

Nach der Registrierung folgt eine email mit dem Termin (Save the Date) und dem Link zum Webcast (Join the Webinar). Weitere kommende Azure Events gibt es hier.

Für alle jene, die noch keine Azure Subscription zum Testen besitzen, gibt es hier eine kostenfreie Azure Trial zu lösen: Azure: Free one-month trial.

image

Viel Spaß und wir sehen uns virtuell beim Event!

Jan-Cornelius Molnar: WOL with Realteak NICs on Windows 10

TL;DR To restore WOL functionality disable Fast Start and install the Realtek device driver from here . Long Story After upgrading several machines from Windows 7 / 8.1 to Windows 10, I noticed that it was no longer possible to wake them over the network...(read more)

codefest.at [MS]: .NET UG Austria (8.9.2015): Mit Apps Geld verdienen - Software as a Business

“Wer Interesse hat sein Talent zu nutzen und seine eigene Software zu vermarkten, bekommt einige Tipps aus erster Hand. Nach über 10 Jahren Software Entwicklung von einem Open Source/Freeware Tool zu einem kommerziellen Tool, gibt Stefan Koell Erfahrungen, Tipps und Ratschläge weiter. Dabei gibt es auch Dinge auf die man besser aufpassen sollte. In diesem Vortag gibt es zwar keinen “code” zu sehen, jedoch werden unter anderem auch Tools und Services vorgestellt, welche sehr hilfreich sein können.”

Ich denke das wird sicherlich wieder ein sehr interessanter Abend und beim anschließenden Grill-Event gibt es genug Zeit für angeregte Diskussionen.

Details…

Sven Hubert: Neu in TFS 2015 – Abschluss und alle Artikel im Überblick

Die letzten vier Wochen vergingen wieder schneller als gedacht, und so kommt unsere Blogreihe „Neu in TFS/VS 2015″ auch schon zum Ende. Garantiert gibt es hier aber bald neue Beiträge über den TFS, das Visual Studio und alles was noch zum guten Application Lifecycle Management (ALM) gehört. Immerhin betrachten wir erst den Anfang des TFS/VS 2015 und blicken auf vierteljährliche Updates die erfahrungsgemäß nicht nur Schwachstellen beheben, sondern uns auch neue Features bringen. Denn an interessanten und sinnvollen Ideen mangelt es nicht…

Ein Blick auf die User Voice reicht, um zu sehen wohin die Reise gehen soll – zumindest laut der Community. Das sich Microsoft stark an den Wünschen der Anwender orientiert, haben wir erneut erlebt. Auch wenn einer meiner persönlichen Favoriten noch nicht unter den Gewinnern war, sind wir doch sehr zufrieden mit dem aktuellen Wurf. Wir haben bereits die ersten Kunden erfolgreich auf das neue System migrieren können, und wir sind selber immer wieder von den neuen Möglichkeiten im Projektalltag begeistert. Es ist schwer, aus all den neuen Möglichkeiten die besten zu küren. Sind es die neuen Lizenzen, die den bisherigen Premium Nutzern mit der neuen Enterprise Lizenz die Möglichkeiten beschert, die bisher den Ultimate Lizenzen vorbehalten waren? Oder ist es Roslyn? Oder das neue Buildsystem das das bisherige System um den Crossplattform Support erweitert? Allgemein dreht sich heute viel um Lizenzen, Open Source und Crossplattform / Mobile Development. Die bisherigen Grenzen in der Softwareentwicklung verblassen nicht mehr, denn an vielen Stellen sind sie bereits längst verschwunden. Ein Raspberry Pi 2 als Build-Server beispielsweise war vor einiger Zeit noch undenkbar. Mit dem TFS/VS Software für Linux entwickeln? Klar, mit viel Aufwand möglich – Dank der Community TFS Build Extensions und SSH aber nun einfach umsetzbar.

Einen klaren Favoriten gibt es also nicht – aber die Richtung!

 

Wir hoffen das lesen hat genauso viel Spaß gemacht wie wir beim Schreiben hatten. Wir schauen auf ein spannendes nächstes Jahr mit dem TFS 2015 bis es dann vielleicht wieder heißt “Neu in …”

 

Und hier noch einmal alle Beiträge der Serie auf einen Blick:

Neu in VS 2015 – Cross Plattform Apps entwickeln

Neu in TFS 2015 – Das Build-System

Neu in VS 2015 – Gründe für den Umstieg auf .NET Core

Neu in TFS 2015 – Das Build-System mit Node.js

Neu in VS 2015 – IntelliTest

Neu in TFS 2015 – Team Project Rename

Neu in VS 2015 – Roaming Custom Layouts

Neu in TFS 2015 – das Kanban Board wird erwachsen

Neu in VS 2015 – Neues von Roslyn

Neu in TFS 2015 – Agile Tools und Web Access

Neu in TFS 2015 – Git Workflow

Neu in VS 2015 – WPF Tree Visualizer und Application Timeline Tool

Neu in VS 2015 – Shared Projects

Neu in VS 2015 – Code-aware Libraries

Neu in VS 2015 – Die kleinen Dinge

Neu in TFS 2015 – Release Management

Neu in TFS 2015 – Neues vom Test Hub

Holger Schwichtenberg: Microsoft behebt schweren Bug im Just-In-Time-Compiler in .NET 4.6

Microsoft hat das Problem der falschen Parameter am 11. August 2015 mit dem Sicherheitsupdate MS15-092 behoben.

Holger Schwichtenberg: Overhead von AngularJS-Direktiven für eigene HTML-Tags

Die Transformation selbstdefinierter HTML-Tags in Standard-Tags mit AngularJS-Direktiven läuft schnell; beim Masseneinsatz auf einer Webseite summieren sich die Millisekunden aber schnell zu signifikanten Werten auf.

Sven Hubert: Neu in TFS 2015 – Neues vom Test Hub

 

Wie wir schon zuvor in der Reihe „Neu in TFS 2015“ lesen konnten, zieht Microsoft sukzessive Funktionalität aus den großen Clientanwendungen (Visual Studio und Microsoft Test Manager) in den Web-Access. Dort können mehr Anwender erreicht werden, da eine Website clientseitig eine sehr leichtgewichtige Angelegenheit ist und wohl die meisten Anwender in der Bedienung eines Webbrowsers geübt sind.

Mit TFS 2015 hat sich auch im Bereich Testing wieder etwas bewegt, was wir uns im Folgenden genauer anschauen werden.


 

Mehr für weniger – Lizenzänderung

Bereits mit TFS 2012.2 hatte Microsoft uns eine erste Version des Web-Based Test Hub präsentiert. Mit TFS 2013 bekamen wir dann die Web-Based Test Execution, welche das Ausführen von manuellen Testfällen im Webbrowser ermöglicht (Abbildung 1), hinzu (siehe Blogbeitrag).

Bild 1

Abbildung 1: Ausführung eines manuellen Testfalls im Webbrowser.

Im Zuge der Umstrukturierung des Lizenzmodells mit TFS 2015 ermöglicht Microsoft jetzt auch den kleineren Teams das Testen im Webbrowser, da die Web-Based Test Execution mit TFS 2015 bereits mit einer User CAL (oder einer Basic-Lizenz) möglich ist. Somit steht nun jedem der leichtgewichtige Weg der Testausführung im Webbrowser offen.

 

User Acceptance Testing mit mehreren Stakeholdern

Der Punkt, an dem wir sehen, ob uns unser Entwicklungsprozess auch wirklich zum Ziel geführt hat, ist der User Acceptance Test. Der Stakeholder, der das Resultat unserer Arbeit letzten Endes abnehmen muss, führt die dafür notwendigen Tests durch. Geführt durch die Web-Based Test Execution arbeitet er die Testfälle des Testplans ab und quittiert uns unsere gute Arbeit mit grünen Häkchen.

So weit ist das Vorgehen aus TFS 2013 bereits bekannt. Doch was ist nun, wenn nicht ein Stakeholder alleine für die Abnahme zuständig ist? Bisher mussten wir in einem solchen Fall eigene Prozessabläufe definieren. Dieser Zusatzaufwand bleibt uns jedoch in Zukunft dank einer kleinen Erweiterung des Test Hubs erspart. In den Release News mit gerade einmal 4 Sätzen beschrieben, bietet uns die Erweiterung unter der Überschrift Assign multiple testers ein Feature, welches uns mit einem leichtgewichtigen Standardablauf genau in einem solchen Szenario unterstützt.

Abbildung 2 zeigt das Vorgehen: Im Testplan (TEST (1)| Test plan (2)) weisen wir die Testfälle einer Suite (3) über Assign testers to run all tests des Kontextmenüs (4) mehreren Testern zu (5). Dabei haben wir gleich die Möglichkeit, jedem Tester eine E-Mail mit seinen Testfällen zusenden zu lassen (6).

Bild 2

Abbildung 2: Zuweisen von Testfällen an mehrere Tester.

In der Übersicht der Suite finden wir nun für jeden Tester eine Instanz pro Testfall (Abbildung 3). Wie im Web-Access bekannt kann ein Tester die Liste auf sich filtern (Abbildung 4).

Bild 3

Abbildung 3: Übersicht mit einer Instanz pro Tester pro Testfall.

Bild 4

Abbildung 4: Gefilterte Übersicht mit den Testfällen eines Testers.

Führt ein Tester seinen Satz an Testfällen gemeinsamen als einen Testlauf aus, erzielen wir den besten Überblick. Abbildung 5 zeigt, wie wir (über TEST (1) | Runs (2)) für jeden Tester einen Testlauf mit dessen Ergebnissen erhalten (3). Die Details eines Testlaufs (4) können wir uns in gewohnter Web-Access-Weise durch einen Doppelklick auf den Testlauf anzeigen lassen.

Bild 5

Abbildung 5: Übersicht und Details der erfolgten Testläufe.

 

Fazit und Ausblick

Auch im Bereich Testing zieht Microsoft mit jedem Release bekannte Funktionalität aus den großen Clientanwendungen in den Web-Access und ergänzt diesen um neue Features. Das gleichzeitige Zuweisen von mehreren Testern zu Testfällen bietet uns mit TFS 2015 einen leichtgewichtigen Ablauf, der uns zuvor in dieser Weise nicht offen stand.

Vor allem dank Visual Studio Online, das ein schnelleres Deployment seitens Microsoft erlaubt, wird sich der Trend „Web-Access“ weiter durchsetzen und uns kontinuierlich mit kleinen und großen Verbesserungen ausstatten, die aus unserem Feedback und dem unserer Kollegen erwachsen sind.

Eine ausführliche Beschreibung der gesamten Funktionalität des Web-Based Test Hubs stellt Microsoft im Bericht Visual Studio 2015 – Web-Based Test Case Management with TFS dar.

codefest.at [MS]: Ein UI für verschiedene Bildschirmgrößen - vereinfachte Erstellung von adaptiven Benutzer Schnittstellen dank Windows 10

Spätestens seit der Einführung der Windows Store Apps, stehen auch nicht Web Entwickler vor folgender Aufgabenstellung. Wie kann ich meine Benutzer Schnittstelle so gestalten, dass sie für unterschiedliche Bildschirmgrößen gleich gut funktioniert?

adaptive_ui_sample

XAML bietet hier mit den “Visual States” schon seit einiger Zeit eine interessante Lösung – in etwa vergleichbar mit den “CSS Media Queries”. Dieses Konzept wurde mit Windows 10 um die sehr hilfreichen XAML Controls  “Adaptive Trigger” und “Relative Panel” erweitert.

Unsere deutsche Kollegin Nicoleta Mihali beschreibt in ihrem Blog Post, wie sich mit Hilfe dieser Controls die Erstellung eines “Adaptive User Interface in Windows 10” vereinfachen lässt.

Zum Artikel…

codefest.at [MS]: Die Titelleiste als Teil einer Windows 10 Universal App

Mit Windows 10 und der Universal Windows Plattform können wir (EntwicklerInnen) sowohl Desktop- als auch Mobile-Apps entwickeln.

Dabei macht es gelegentlich durchaus Sinn, die Titelleiste in das UI Konzept mit einzubeziehen – vor allem auf kleineren Devices; z.B.

TitelBar_Search

Unser Kollege David Catuhe hat in einem Blog Post beschrieben, wie sich so etwas mit XAML realisieren lässt und man z.B. das Windows Edge UI nachbauen kann.

TitleBar_EdgeStyle

Zum Artikel…

Uli Armbruster: Wie fachlich klare Konzepte technische Probleme lösen

Nachdem ich im vorherigen Beitrag Beispiele zur Abgrenzung des fachlichen Konzepts Kunde gegeben habe, möchte ich in dem folgenden Video erklären, wie die Fachabteilung zu guter Software beitragen kann. Denn wenn fachliche Konzept klar abgegrenzt werden, fallen viele technische Probleme automatisch weg.

Der Klick aufs Bild führt zu dem Video in meinem YouTube Channel. Unten auf dem Zahnrad könnt ihr die Auflösung hochsetzen.

Video mit der Erklärung für die Fachabteilung woher die technischen Probleme bei der Vermengungen von fachlichen Konzepten kommen.

Video mit der Erklärung für die Fachabteilung woher die technischen Probleme bei der Vermengungen von fachlichen Konzepten kommen.


Einsortiert unter:German, Misc Tagged: DDD

Uli Armbruster: Das Konzept Kunde gibt es nicht

man listen

Die Entwickler müssen genau hinhören, was mit manchen Begriffen gemeint ist. (Quelle: Fotolia)

Im vorherigen Artikel habe ich erläutert, wie der Domänenbegriff Kunde in unterschiedlichen Bedeutungen verwendet wird. In diesem Post mache ich einige Vorschläge, welche zeigen, wie es sich besser machen lässt.

Der Kunde im Verkauf ist die Person, die meine Produkte kauft. Er ist also der Käufer.

Im Support ist der Kunde derjenige, der meine Produkte bedient und sich bei Fragen zur Bedienung an den Support wendet. Da könnten vielleicht Anwender oder Nutzer als Begriffe in Frage kommen.

Im Rechnungswesen ist der Kunde derjenige, der mir Geld für meine Produkte schuldet und die Schuld dann hoffentlich begleicht. Schuld => Debit => Debitor. Oder alternativ Kontoinhaber. Das wiederum könnte aber zur Verwechslung mit den Lieferanten führen, die natürlich auch Kontoinhaber sind. Also nehmen wir besser Debitor.

Im Versand oder im Lager geht es darum die Produkte an einen Empfänger auszuliefern. Wir benötigen die Adresse, um das Paket, das die Ware erhält, zu adressieren. Also Empfänger, Adressat, Warenempfänger – man hat die freie Auswahl.

Das Marketing hat unter anderem die Ziele, die Neukundenakquise mit Werbemaßnahmen anzukurbeln, gleichzeitig aber die Kundenbindung zu festigen. Also wie wäre es mit Neukunde und Bestandskunde. Alternativ potentieller Kunde oder – für manche Branchen denkbar – Kandidat.

Fazit

Es muss nicht immer schwer sein gute Domänenbegriffe zu finden, die klar ausdrücken, worum es sich bei dem Konzept handelt. Oftmals genügt es sich die Domäne, in der der Begriff verwendet wird, anzuschauen und zu umschreiben, was der Begriff ausdrücken soll. Mit der Erfahrung wird das für den Fachexperten ganz selbstverständlich und ihm springen förmlich schlechte Benennungen ins Gesicht (schon mal über das Konzept der ‚Benutzer‘ nachgedacht?).

In meinem nächsten Artikel kommen wir zu der spannenden Frage, woher die technischen Probleme bei Vermengungen von Bedeutungen kommen.


Einsortiert unter:German, Misc Tagged: DDD

Uli Armbruster: Was meint die Fachabteilung eigentlich, wenn Sie von Kunden spricht?

Quelle: Fotolia

Jede Fachabteilung spricht von dem sogenannten Kunden (Quelle: Fotolia)

Heute war ein Meeting mit dem Rechnungswesen. Sie wollen eine Änderung, um einfacher die Kontodaten unserer Kunden ändern zu können. Letzte Woche sollte unser Kampagnen-Tool fürs Marketing dahingehend erweitert werden, dass sich detaillierter Informationen zu den Kunden sammeln lassen. Und nächste Woche, so wurde mir gesagt, soll ich mit dem Verkauf sprechen, um in den Gutschriften für Kunden einen Passus zu ergänzen.

Ups, was ist da los? Alle Welt spricht von dem ‘Kunde’. Aber ist dabei immer der gleiche Kunde gemeint? Also natürlich ist es dieselbe Firma bzw. Person, aber ist auch das gleiche Konzept gemeint? Oder anders gefragt: Würde das Rechnungswesen Informationen über die Kundenbeziehungen ändern oder würde der Versand Änderungen an Gutschriften durchführen? Wohl eher nicht. Benötigt denn der Kundenservice in seiner Oberfläche Informationen wie die Bankverbindung oder muss das Rechnungswesen die abonnierten Mailinglisten des Kunden sehen können? Ups, da war es wieder: Der Kunde.

Mit diesem Artikel soll der Einstieg in eine kleine Serie gemacht werden, in der ich erkläre, warum sich viele Probleme mit der Anwendung bereits dadurch vermeiden lassen, dass die Fachabteilung bei Domänenbegriffen respektive -konzepten genauer abgrenzt und explizit macht, was sie meint.

Beispielsweise wirkt sich das, auch wenn es der Anwender nicht glauben mag, stark auf die Geschwindigkeit und die Skalierbarkeit des Programms aus. Gleichfalls ist die Erweiterbarkeit und die Entwicklungsgeschwindigkeit davon betroffen. Oder die Usability. Genauso die Sicherheit und die Fehleranfälligkeit. Ganz schön viel, was die nicht differenzierte Betrachtung eines Kunden ausmachen kann oder?

Im nächsten Teil erläutere ich Beispiele, die zeigen: Hey, das ist gar nicht so schwer eine klare Unterscheidung zu machen.


Einsortiert unter:German, Misc Tagged: DDD

Marco Scheel: Links for 2015-08-21 [del.icio.us]

Golo Roden: Ich kenne was, was Du nicht kennst: media-typer

REST-Dienste müssen gelegentlich auf den Content-Type-Header einer Anfrage reagieren. Doch wie überprüft man diesen verlässlich? Was auf den ersten Blick trivial erscheint, ist bei näherem Hinsehen komplexer als gedacht. Das Modul media-typer schafft Abhilfe.

Johannes Renatus: Bootstrap 4 Alpha – Released

Das es eine neue Bootstrap Version geben wird, war nur eine Frage der Zeit. Vor allem wurde die Alpha Bereits vor einer ganzen Weile angekündigt und nun ist es endlich soweit. Eine erste Alpha Version von Bootstrap 4 wurde veröffentlicht und kann ausprobiert werden. Sollte es noch Webentwickler geben, die nicht wissen was Bootstrap ist, […]

Holger Sirtl: Azure News on Friday (KW34/15)

Auch diese Woche gab’s wieder viele Nachrichten zur Microsoft Azure Plattform. Hier sind nähere Infos dazu…

Aktuelle Neuigkeiten

Datum Nachricht
20.08. Row-Level Security for SQL Database is Generally Available
Zugriffsbeschränkungen auf Zeilenebene in Azure SQL Database ab sofort verfügbar
20.08. Azure Mobile Apps August 2015 update
Die Grenzen zwischen Azure Web Apps und Mobile Apps wandern - Push, Mobile Auth und Offline Sync neu in Web Apps
20.08. Why Your Private Cloud is Failing – Join Me at OpenStack Silicon Valley
Fehlende Umsetzung fachlicher Anforderungen ist Grund für das Scheitern vieler Private Cloud Umsetzungen
20.08. Azure Site Recovery is now available in Central US, North Central US, South Central US, East US2
Azure Site Recovery zur Absicherung von On-premises Rechenzentren ist jetzt in weiteren Regionen verfügbar.
20.08. Meet AzureCon
Am 29.09. gibt's die nächste virtuelle AzureCon mit vielen Live Keynotes, Q&A Sessions, Deep-Dive Sessions
20.08. Azure DocumentDB: JavaScript as Modern Day T-SQL
Azure DocumentDB kann jetzt direkt aus JavaScript via JavaScript Language Integrated Queries angesprochen werden
20.08. Microsoft and Mesosphere partner to bring Mesos container orchestration across Windows and Linux worlds
Mesosphere hoch-skalierbare, elastische Orchestrierungsengine kann jetzt direkt mit Windows Server zusammenarbeiten.
19.08. Announcing Windows Server 2016 Containers Preview
Windows Server 2016 Container Preview - Docker Deployments in Azure jetzt auch in Windows Virtual Machines möglich
18.08. How to Link an Azure RemoteApp collection to your existing Azure Virtual Network (without domain join!)
Azure RemoteApps können jetzt auch ohne Domain Join an ein bestehendes Virtual Network angebunden werden
18.08. Azure Government Achieves Significant Compliance Milestones
Azure Government erhält weitere Zertifizierungen (FedRAMP Moderate P-ATO, DISA Level 2 PA, HIPAA BAA etc.)
18.08. AzCopy - Introducing Append Blob, File Storage Asynchronous Copying, File Storage Share SAS, Table Storage data exporting to CSV and more
Neues in AzCopy: Kopieren von Azure Append Blobs, async kopieren von Azure Files, SAS Support, Tables nach CSV
18.08. Data helps the milk flow: Dairy uses IoT to manage the health and productivity of its cows
Cooler Azure IoT Showcase aus Deutschland: Mit "HealthyCow24" überwacht Dairy Kühe und deren Milchproduktion
18.08. Announcing Backup of Windows 10 machines using Azure Backup
Mit Azure Backup können jetzt auch Windows 10 PCs gesichert werden
18.08. Identity & Access Management in Windows 10
Identity und Zugangsmanagement in Windows 10 mit Azure AD
18.08. Introducing Windows Azure for IT Professionals
Kostenloses eBook: Einführung in Microsoft Azure für IT Pros
17.08. Monitor your Azure Mobile Engagement data in Power BI
Beschreibung, wie Azure Mobile Engagement Daten mittels Power BI visualisiert und ausgewertet werden können.
17.08. Containers: Docker, Windows and Trends
Blogpost, der Docker, Container, Virtualisierung, Windows Server Container, Hyper-V Container in Kontext setzt
17.08. Dependency call stack and application insights SDK labs
Mit dem neuen Application Insights SDK Labs jetzt Methoden identifizieren, die entfernte Ressourcen aufrufen
14.08. Schema Agnostic Indexing with Azure DocumentDB
Schema-unabhängige Indizierungen in Azure DocumentDB

Neue Videos

Datum Nachricht Video
20.08. Azure API Management Policy Expressions 102 - JSON Web Tokens
Security in API Management - OAuth Autorisierung und JWT Tokens im Rahmen von Azure API Management Policies
20.08. Azure API Management Policy Expressions 103 - Caching and Output Conversion
Benutzerabhängiges Caching und Datenformatierung in Azure API Management und entsprechenden Policies
18.08. Tuesdays with Corey: Classic vs ARM - what up with that?
Corey Sanders vergleicht das neue Azure Resource Manager Modell mit dem klassischen Azure Service Management
14.08. Episode182: Usage and RateCard APIs with Moinak Bandyopadhyay
Ressourcen-Verbrauch und Abrechnungsdetails mit den neuen Azure Usage und RateCard APIs auslesen

codefest.at [MS]: Developers, get ready for AzureCon

Meet AzureCon”! Microsoft wird im September eine neue virtuelle Veranstaltung für die Azure Community durchführen, die AzureCon. Bei dem Event werden die aktuellsten Neuigkeiten, neue Referenzen und Best Practises rund um Azure präsentiert.

AzureCon ist ein kostenloses Ein-Tages-Event und wird am Dienstag, den 29. September, stattfinden.
In unserer Zeitzone ist die Startzeit um 18 Uhr – gemütlich. Zwinkerndes Smiley

https://azure.microsoft.com/azurecon/

image

Es wird eine Live Keynote mit Scott Guthrie, Jason Zander und Bill Staples geben, live interactive Q&A, Technical lap-around sessions unter anderem von Technical Leaders wie Mark Russinovich und Scott Hanselman und mehr als 50 on-demand deep-dive technical sessions.

image

En volles Programm, schreibt Nicole Herskowitz, Director of Product Marketing, Cloud Platform, im Azure-Blog Meet AzureCon und empfiehlt das Event wärmstens: “When you join us at AzureCon, you’ll be among the first to hear about what’s next with Azure.“

In einigen Microsoft Niederlassungen sind Public Viewing Events für die lokalen Azure Communities geplant, so auch bei Microsoft in Wien. Mehr dazu später.

Bis dahin sind es noch 39 Tage…

image

Noch genügend Zeit zu planen – und den 29. September am besten gleich nach der einfachen Anmeldung mit dem Link in den Kalender eintragen.

image

Microsoft plant übrigens, die AzureCon zweimal pro Jahr durchzuführen und zwar dieses Jahr im September und dann wieder im März 2016.

Hierzu kommen die großen Microsoft US-Konferenzen Build und Ignite sowie lokale Roadshows, DX Camps und Webinars – siehe auch die vielen neuen Channel9 (videos for developers…) und Microsoft Virtual Academy (MVA)-Trainings – schon mal als Vorbereitung… Zwinkerndes Smiley

image

Viel zu erfahren und zu erlernen – vor allem für Developer!

CU there (virtually)!

Sven Hubert: Dynamische Generierung von Klassen und Datenbanken aus XML mit T4

Bei der Entwicklung von Datenbankanwendungen wird häufig das Entity Framework (EF) zur Hilfe gezogen, um aus einem Modell die Klassen und die Datenbank zu generieren. Das EF hat sicher viele Vorteile und ist relativ einfach zu verwenden, doch das EF hat nicht für alle Probleme eine Lösung: In den generierten Klassen und im Modell fehlen oft viele wichtige und notwendige Informationen für den Entwickler.

Klasseneigenschaft, die berechnet werden wie der Flächeninhalt, sollten wegen Redundanz nicht in der Datenbank gespeichert werden, können aber in einer Klasse als Property notwendig sein. Code-Kommentare, die dem Entwickler helfen sollen, die Klassen zu verstehen, können nicht in den Klassen abgelegt werden, da sie generiert werden. Auch Informationen zu Einheiten wie mm oder cm bei einer Länge fehlen im generierten Code komplett.

Eine Möglichkeit um die Probleme zu lösen, ist, die Klassen und die Datenbank selber zu generieren per T4-Templates. Für die Templates als Model dienen dabei XML-Dateien, in denen alle notwendigen Informationen gespeichert werden.

dnp_092015Mehr dazu kann im Artikel „Dynamisch mit XML und T4“ in der dotnetpro 09/2015 gelesen werden.

Ist dieses Thema interessant für Sie oder benötigen Sie Unterstützung bei der Software-Entwicklung und Architektur von .NET basierten Lösungen oder bei Einführung und Anpassung von Visual Studio / Microsoft Test Manager / Team Foundation Server?

codefest.at [MS]: Besser lesen im Browser Lesemodus

Wir werden älter oder die Buchstaben kleiner. Egal mit welcher Perspektive, Microsoft hat seit drei Jahren für uns eine echte Innovation, den Lesemodus oder auch Reading View genannt. Dabei kann der Benutzer eine Website in einem auf den Text fokussierten lesefreundlichen Modus konsumieren.

Die Leseansicht wurde mit IE11 aus Windows 8, dem METRO Browser eingeführt. Eine eigene Logik erkennt passende Websites und blendet in der Adressleiste ein Buch Icon ein, wenn der Inhalt geeignet erscheint.

image

Danach fokussiert der Browser die Darstellung auf das Wesentliche und blendet kleine Bilder wie Werbung oder Menüs aus.

Der neue Edge Browser und der Windows 8.1 phone Browser unterstützen diese Ansicht ebenfalls. Sogar Mozilla Firefox zieht in der Version 40 nach. Webdesigner sollte ein paar Regeln kennen um davon bestmöglichen Nutzen ziehen zu können.

Grundsätzlich sollen mindestens 700 Zeichen auf der Website sein. Dazu gehören folgende Metatags ohne die z.B. der Windows Phone Browser die Darstellung verwehrt. Die Inhalte werden dann im Lesemodus an definierter Stelle eingeblendet, außer Title.

   1:  <title>Lesemodus</title>
   2:  <meta name="displaydate" content="muss kein Datum sein oben">
   3:  <meta property="og:site_name" content="ppedv AG">
   4:  <meta name="copyright" content="copyright am Ende">

Die Überschrift wird aus dem ersten H1 Element ausgelesen. Erst der darauf folgende Text, idealerweise in ein P Element gepackt, wird dann alternativ formatiert dargestellt. Die Schriftgröße und Art wird vereinheitlicht.

readingview1

readingview2

Bilder müssen  >= 400 px mit einem Verhältnis >= 1/3 und =< 3.0 sein. Andernfalls werden diese nicht angezeigt. Laut Dokumentation sollte man Bilder in  figure Element schachteln und per figcaption beschreiben. Der Edge Browser zeigt dann in meinen Versuch kein Bild mehr an.

Im Standardfall wird das erste Bild als dominantes Image bezeichnet und über den Text dargestellt, was auf dem Smartphone sehr gut aussieht. Im Screenshot zu erkennen ist auch der Autor und Datum aus den Metatags.

lesemodus3

Alle weiteren Bilder im Textfluss, die obige Größenanforderungen erfüllen, werden im Fließtext dargestellt.

image

Im Screenshot ist auch der Copyright Hinweis am Ende zu erkennen.

Der Lesemodus ist kein Standard, Mozilla interpretiert die Inhalte anders. Auch werden in den Test Bilder nicht nachvollziehbar ausgeblendet. Versuche mit existierenden Websites legen den Schluss nahe, das es wesentlich mehr Regeln im Browser gibt nach denen eine Darstellung im Lesemodus erfolgt.

image

Die Kurs Websites der ppedv Schulungen kommen aus dem gleichen Template und werden Datengebunden gefüllt und trotzdem unterschiedlich dargestellt.

image

Ich werde an dem Thema dranbleiben, weil es speziell für mobile Darstellung ein echter Gewinn an Usability ist.

Nachtrag: dieser Blogartikel ist aus unerfindlichen Gründen nicht für die Reading View geeignet.

Anm.: Dieser Artikel wurde von Hannes Preishuber verfasset und auch am ppedv Team Blog veröffentlicht…

codefest.at [MS]: Developer Events

Am Anfang war die Cloud - Ihr Weg zu kosteneffektiven und sicheren IT Dienstleistungen

Interesse an Microsoft Azure? Zwei Serien von kostenlosen Workshops bieten Euch die Möglichkeit Frühling, Sommer, Herbst und Winter sinnvoller zu verbringen, als am z.B. auf der Couch oder am Strand zu sitzen und ein Buch zu lesen.

Am Anfang war die Cloud – Euer Weg zu kosteneffektiven und sicheren IT Dienstleistungen

Steigt mit uns ein in die Welt von Cloud Computing und Microsoft Azure!

Oliver Lintner zeigt neben einer allgemeinem Einführung in die Welt von Microsoft Azure anhand von zwei konkreten Beispielen die einfache Handhabung und die Vorteile von Microsoft Azure (Microsoft Skill Level 100-200).

Die nächsten Termine:

Wir beginnen mit der Anlage einer Microsoft Azure Subscription und betrachten dann wie Microsoft Azure typische Unternehmensanforderungen ermöglicht:

  • Kostenersparnis
  • Erhöhung der Agilität und
  • Maximierung der Sicherheit durch Auslagerung von Webanwendungen

Begleitet uns durch einen interaktiven Vormittag und stellt Euch darauf ein selbst aktiv zu werden. Wir freuen uns auf Eure Teilnahme!

Um an den praktischen Übungen teilnehmen zu können, nehmt bitte einen Laptop mit. Verkabelter Internetzugang steht vor Ort zur Verfügung.

Neu im Programm: AzurePR!ME mit unterschiedlichen Schwerpunktthema

Wenn Ihr Euch mit Microsoft Azure schon ein bisschen auskennt, dann kommt doch einfach nur am Nachmittag vorbei. Als separate Veranstaltung bieten wir mit AzurePR!ME direkt im Anschluss die Möglichkeit uns bei der vertiefenden Betrachtung eines Azure Teilbereiches zu begleiten (Microsoft Skill Level 200-300).

AzurePR!ME - Azure App Service

Erstes AzurePR!ME Schwerpunktthema: "Azure App Service"

Bei Azure App Service handelt es sich um eine Cloudplattform, mit der man leistungsfähige und intelligente Web- und mobile Apps entwickeln kann. Diese Plattform unterstützt einen u.a. schnell und einfach Web-Apps, die sich problemlos skalieren lassen, sowie beeindrucke mobile Apps zu erstellen, als auch Geschäftsprozesse abzubilden und zu automatisieren.

Wir sprechen mit den Azure Onboarding Camps sowohl Kunden als auch Partner an. Es kann dabei etwas technischer werden insbesondere bei den HandsOn Teilen, wobei der Vortrag auch einen guten Überblick für technisch weniger bewendete gibt.

Die nächsten Termine:

Wichtig für die Teilnahme ist die eigene Microsoft Azure Subscription! Ihr könnt entweder eine bereits bestehende Microsoft Azure Subscription einsetzen oder eine kostenlose Testversion im Vorfeld anlegen. Gerne helfen wir auch beim Anlegen Eurer Microsoft Azure Subscription im Rahmen der Veranstaltung.

Jetzt kostenlose Microsoft Azure Subscription lösen!

Wisst Ihr eigentlich, dass Ihr als MSDN Abonnent oder als BizSpark Mitglied bis zu € 1.380.- jährlich an Azure-Diensten kostenlos von Microsoft beziehen könnt? Mehr dazu findet Ihr auch in diesem kostenlosen Online Training:  Microsoft Azure als kostenfreie Test- & Entwicklungsumgebung für MSDN Abonnenten

Ist Euch der Weg nach Wien zu beschwerlich? Oder passen einfach die Termine für Euch nicht? Dann nehmt doch online an einem unserer Microsoft Azure Webinare teil! Ein technischer Spezialist von Microsoft zeigt Euch Microsoft Azure live, und beantwortet Eure Fragen. Anmelden unter http://azure.microsoft.com/de-de/overview/webinars/

Und falls Ihr vor dem Workshop schon etwas Training braucht, dann schaut Euch doch mal einen dieser kostenlosen deutschsprachigen Online Kurse an. Zur Vorbereitung bietet die Microsoft Virtual Academymit Kursen rings um Microsoft Azure einiges an tollen Lerninhalten:

MVA Kurse zu Microsoft Azure

Anmerkung: Dieser Artikel wird immer wieder aktualisiert. Versprochen. Smile

Norbert Eder: C# 6: Index initializers

Objekte und Collections können ja bereits recht einfach mit initialen Werten versehen werden. Bei Objekten mit Indexer hingegen fehlt ein eleganter Weg. Dieser ist nun mit C# 6 verfügbar und sie wie folgt aus:

var mapping = new Dictionary<int, string>
{
    [10] = "aafddd",
    [17] = "ddfkwd",
    [29] = "rrkktk"
};

Console.WriteLine(mapping[10]); // aafddd

Viel Spaß.

Viele weitere Neuerungen finden sich in der C# 6 Serie.

The post C# 6: Index initializers appeared first on Norbert Eder.

Sven Hubert: Neu in TFS 2015 – Release Management

Microsoft hat bereits mit TFS 2013 eine weitere Komponente in die Visual Studio ALM Familie integriert: Release Management. Im Wesentlichen arbeitet dieses System mit der Windows Workflow Foundation zur Ablaufsteuerung. Wir empfehlen unseren Kunden seit längerem bei der Erweiterung nicht auf workflowbasierte Activities zu setzen, da sich hier einiges verändern wird. Beim Lesen der Release Notes des TFS 2015 fällt außerdem auf, dass die Änderungen an Release Management weniger groß ausfallen. Wir erklären, warum das so ist, wie Sie sich gut für die Zukunft rüsten können und was Microsoft in Zukunft bereitstellen wird.

Was ist der Unterschied zwischen Team Builds und Release Management? Wann wird welche Komponente genutzt? Die Abgrenzung zwischen den Buildsystemen des TFS 2015 und Release Management ist recht einfach. Beim Team Build wird aus Quellcodedateien ausführbarer Code (zum Beispiel DLL oder EXE) generiert. Release Management verteilt nacheinander dieses Buildergebnis auf verschiedene Umgebungen. Ist das Buildergebnis auf dem Zielsystem installiert, wird das Release freigeben (siehe Approver in Abbildung 1) und das Deployment erfolgt automatisch auf das nächste Zielsystem in der Release Pipeline (gelbe Pfeile in Abbildung 1). Ein Stoppen des Buildprozesses für manuelle Interaktion, wie das Freigeben eines Release, ist beim Team Build nicht vorgesehen. Eine typische Release Pipeline beginnt mit einem Entwicklungssystem, einem QA-System und dem endgültigen Produktivsystem.

image

Abbildung 1: Konfiguration eines Release Paths bestehend aus Dev, QA und Prod mittels Release Management Client

Die Schritte während des Deployments werden in einem Workflow definiert. Im Vergleich zu XAML Builds stehen die konfigurierten Workflows nicht als XAML-Dateien zur Verfügung, sondern werden von Release Management selbst verwaltet. Damit ist es leider nicht möglich selbsterstellte Workflows im Source Control abzulegen und zu versionieren. Release Management bietet zwei verschiedene Release Templates: Mitgelieferte Actions und Tools können im Agend-based Release Template genutzt werden (siehe Abbildung 2). Das vNext Release Template hingegen bietet die Möglichkeit PowerShell und PowerShell DSC-Skripte auszuführen sowie das Configuration Management Tool Chef zu integrieren (siehe Abbildung 3).

image

Abbildung 2: Agent-Based Release Template

image

Abbildung 3: vNext Release Template

Ein Release kann jederzeit manuell im Release Management Client gestartet werden. Für den automatischen Start eines Releases nach einem erfolgreichen Build muss in TFS 2015 das verwendete Buildsystem berücksichtigt werden.

XAML Builds

Der Release Management Client enthält ein erweitertes Build Process Template. Dieses ist im Installationsverzeichnis (standardmäßig C:\Program Files (x86)\Microsoft Visual Studio 14.0\Release Management\Client\bin) zu finden und muss in das Source Control eingecheckt werden. Danach kann das Template ausgewählt und konfiguriert werden. Wie Abbildung 4 zeigt, enthält das Build Process Template einen zusätzlichen Abschnitt für die notwendigen Parameter, wie zum Beispiel die Zielumgebung (Release Target Stage).

image

Abbildung 4: Automatisches Release im bisherigen Buildsystem konfigurieren

TFS 2015 Builds

Im neuen Buildsystem des TFS 2015 muss der Build Task Publish Build Artifacts hinzugefügt und in Release Management 2015 müssen vNext Release Templates verwendet werden. Der Artifact name in der Builddefinition (siehe Abbildung 5) und der Component Name in Release Management (Abbildung 6) müssen übereinstimmen.

image

Abbildung 5: Konfiguration im TFS 2015 Buildsystem

image

Abbildung 6: Konfiguration in Release Management 2015

Somit kann Release Management in beiden Buildsystemen verwendet werden.

Neben der Kompatibilität zum neuen Buildsystem sind nur kleinere Verbesserungen in Release Management eingeflossen, wie zum Beispiel Fehlerkorrekturen und Optimierungen des Clients und die Synchronisierung von Active Directory- und TFS-Sicherheitsgruppen.

Ausblick

Dass die Änderungen an Release Management 2015 marginal sind hat einen guten Grund: Ende April gab Microsoft bekannt, dass zukünftig für das Release Management die gleiche technische Basis des neuen Buildsystems genutzt werden soll (Quelle: http://blogs.msdn.com/b/bharry/archive/2015/04/29/visual-studio-and-team-foundation-server-at-build-2015.aspx). Damit profitieren alle Anwender von den Neuerungen, wie zum Beispiel die Konfiguration via Webbrowser und Plattform-unabhängiger Ausführung. Wie an anderer Stelle nachzulesen ist, wird es am bisherigen Release Management keine signifikante Weiterentwicklung geben (Quelle: http://blogs.msdn.com/b/visualstudioalm/archive/2015/04/29/release-management-announcements-at-build-2015.aspx).

Wie bereitet man sich nun auf die Umstellung am besten vor? Nutzer von Agent-Based Release Templates sollten sämtliche Erweiterungen in PowerShell implementieren und die bereits vorhanden vNext Release Templates dafür verwenden. Wie auch beim Buildsystem wird die Umstellung nicht abrupt erfolgen, so dass die kommende Umstellung bei Neuimplementierungen unbedingt berücksichtigt werden sollte.

Für Nutzer von TFS 2015, die bald mit Release Management beginnen wollen, stellt sich die Frage, ob das aktuelle Release Management verwendet werden soll oder auf die nächste Version gewartet werden soll. In diese Entscheidung fließt auch die geplante Veröffentlichung von Release Management vNext ein. Bisher ist noch kein Termin offiziell bekannt gegeben worden. Auch die VSO Feature Timeline (Quelle: https://www.visualstudio.com/en-us/news/release-archive-vso.aspx), in der auch neue Features für TFS On-Premise angekündigt werden, zeigt nur die geplante Public Preview für das vierte Quartal (siehe Abbildung 8).

image

Abbildung 8: Aktuelle Visual Studio Online Features Timeline

Fazit

Release Management 2015 bietet im Wesentlichen Fehlerkorrekturen und kleinere Optimierungen. Für die Kombination mit Team Builds, muss je nach eingesetztem Buildsystem das entsprechende Release Template verwendet werden. Das Deployment von Buildergebnissen, welche mit dem neuem Buildsystem generiert wurden, ist nur mit vNext Release Templates möglich.  Die Nutzung von XAML-Builds in Kombination mit Agent-Based Release Templates ist nach wie vor möglich, muss jedoch in Erwartung einer neuen technischen Basis von Release Management perspektivisch umgestellt werden.

Hinweis zum Update von Release Management 2015

Dass bei der Installation von Updates vorherige Versionen von Release Management (Server, Client und Deployment Agent) manuell deinstalliert werden müssen, ist weiterhin notwendig. Bei der Deinstallation des Servers bleibt die Datenbank erhalten. Nach der Installation müssen lediglich die Zugangsdaten erneut eingetragen werden.

Sven Hubert: Neu in VS 2015 – Die kleinen Dinge

Wir haben bisher neue Features vorgestellt, die sich bereits in den ersten Minuten nach dem Umstieg auf Visual Studio 2015 bemerkbar machen. Im Folgenden zeigen wir an welchen kleineren Schrauben Microsoft gedreht hat, um den Entwickler noch besser zu unterstützen.


Refactoring von Quellcode

Variablen, Methoden, Klassen etc. lassen sich mit Visual Studio schon seit Längerem bequem per Assistent umbenennen. Kommentare und Strings wurden bisher nicht berücksichtigt. Dies führte mitunter dazu, dass Kommentare nicht mehr den tatsächlichen Quellcode beschreiben. In Visual Studio 2015 ist es möglich das Umbenennen auch für Kommentare und Strings zu aktivieren (siehe Abbildung 1).

image

Abbildung 1: Umbenennen von Variablen inklusive Kommentaren und Strings

Breakpoints und Zeitmessung

Die Verwendung von Breakpoints wurde grafisch überarbeitet und bietet jetzt IntelliSense-Unterstützung (siehe Abbildung 2, Nr. 1). Zudem lässt sich ein Logging aktivieren, welches bei der Fehlersuche und -korrektur unterstützt (siehe Abbildung 2, Nr. 2).

SNAGHTML15c17add

Abbildung 2: Definieren von Breakpoints mit Bedingungen und Aktionen

In Visual Studio 2015 wird bei jedem Stopp an einem Breakpoint die vergangene Zeit im Vergleich zum vorherigen Breakpoint angezeigt. Auf der Suche nach Performanceproblemen entfällt somit die Implementierung einer eigenen Zeitmessung oder gar der Einsatz von digitalen wie auch analogen (Stopp-)Uhren. Die Diagnosetools können direkt über den eingeblendeten Link aktiviert werden (siehe Abbildung 3).

image

Abbildung 3: Zeitmessung zwischen Breakpoints

Filtern von Fehlern

Die Erweiterungen der Fehlerliste in Visual Studio 2015 ermöglichen es, auch in großen Projekten die Übersicht zu behalten. Die angezeigten Fehler, Warnungen und Meldungen lassen sich auf geöffnete Dokumente beschränken (siehe Abbildung 4, Nr. 1) und nach bestimmten Arten filtern (siehe Abbildung 4, Nr. 2).

SNAGHTML15c8cc47

Abbildung 4: Filtermöglichkeiten von Fehlern, Warnungen und Meldungen

Darüber hinaus bietet Visual Studio 2015 die Möglichkeit Lösungen für Fehler mittels Bing zu suchen. Damit entfällt das lästige Abtippen von Fehlermeldungen oder das Zwischenkopieren und manuelle filtern der notwendigen Textstellen in einem Texteditor. Abbildung 5 zeigt ein exemplarische Suche .

image

Abbildung 5: Hilfe zur Lösung von Fehlern mittels Bing-Suche

Lambda-Debugging

Lambda-Ausdrücke erlauben das Erstellen von anonymen Methoden und werden unter anderem in LINQ oder bei der asynchronen Programmierung eingesetzt. Die Lambda-Notation erlaubt es außerdem, kompakteren Quellcode zu erstellen. Bisher war das Debuggen von Lambda-Ausdrücken nicht möglich und die Fehlersuche wurde somit zusätzlich erschwert. Stoppt in Visual Studio 2015 der Debugger an einem Lambda-Ausdruck, kann jeder Wert einzeln geprüft werden (siehe Abbildung 6, Nr. 1). Aufwendigere Implementierungen können im Watch- und Immediate-Fenster untersucht werden (siehe Abbildung 6, Nr. 2).

SNAGHTML15e1f699

Abbildung 6: Lambda-Debugging und Auswertung in Watch- sowie Immediate-Fenster

Code Review und CodeLens

Eine eindeutige Bereicherung für jeden Entwickler ist nachfolgende Lizenzänderung. Bisher waren zwei elementare Funktionen nur den Besitzern der höchsten Edition (vorher Ultimate, jetzt Enterprise) vorbehalten: Code Review und CodeLens. Beide Features sind ab sofort bereits in der Professional Edition von Visual Studio 2015 verfügbar. Mit Code Review ist der gesamte Reviewprozess im TFS dokumentiert und kann später nachvollzogen werden. CodeLens hingegen bietet dem Entwickler die Möglichkeit auf dem ersten Blick zu erkennen, wie oft eine Methode referenziert wird, wer zuletzt den Code verändert hat, welche Work Items mit der Codepassage verknüpft sind etc. In Visual Studio 2015 ist CodeLens auch endlich für Git-Projekte verfügbar.

Abbildung 7 zeigt eine Methode des Roslyn Compilers von github (siehe https://github.com/dotnet/roslyn). Dank CodeLens ist es möglich mit einem Klick die letzten Änderungen nachzuvollziehen, ohne sich mühsam durch die Historie zu klicken. Der Verfasser der letzten Codeänderung ist direkt ersichtlich und kann bei Fragen kontaktiert werden.

SNAGHTML10f21948

Abbildung 7: CodeLens mit verschiedenen Indikatoren und Historie

Dies waren nur einige Neuerungen in Visual Studio 2015. Was gefällt Ihnen in Visual Studio 2015 am besten?

Holger Schwichtenberg: Neue Community-Konferenz rund um SharePoint, Office 365 und Azure am 11.9. in Köln

Das Team der erfolgreichen dotnet Cologne bietet nun als ShareDev Cologne e.V. eine neue kostengünstige Community-Veranstaltung an.

Norbert Eder: C# 6: Using static

Eine weitere Neuerung in C# 6 ist using static. Dies ermöglicht den Import statischer Klassen und die Verwendung der verfügbaren Member ohne voll qualifizierter Angabe. Hier ein Beispiel:

using static System.Math;

class Program
{
    static void Main(string[] args)
    {
        System.WriteLine(Cos(3));
    }
}

Auch der Import von enums ist möglich:

using static System.Environment;
using static System.Environment.SpecialFolder;

class Program
{
    static void Main(string[] args)
    {
        GetFolderPath(Templates);
    }
}

Viel Spaß!

Viele weitere Neuerungen finden sich in der C# 6 Serie.

The post C# 6: Using static appeared first on Norbert Eder.

Sven Hubert: Neu in VS 2015 – Code-aware Libraries

Wer kennt das nicht, dass Konsumenten einer eigenen Bibliothek nachfragen, wie diese richtig anzuwenden ist. Visual Studio 2015 hat dafür ein passendes Konstrukt geschaffen: Die Code-aware Librarys.

Mit Code-aware Librarys hat Microsoft Entwicklern in Visual Studio 2015 und Roslyn ein Werkzeug zur Verfügung gestellt, das hilft, die Bibliotheken ihrer Bestimmung entsprechend anzuwenden und auf Fehlerquellen hinzuweisen. Dieses Wissen wird in Code-aware Librarys, anders als deren Namen annehmen lassen, in einer separaten Bibliothek ausgeliefert, da ein Endkunde mit diesen zusätzlichen Bytes nicht in Interaktion tritt.

Aufbauend auf Roslyn und dessen APIs werden in der Code-aware Library spezifische Diagnostic Analyzer und CodeFixProvider implementiert.

Was bringt es?

Erfahrungen der Entwickler können mit Code-aware Librarys in Code gegossen werden und nicht-affine Entwickler direkt beim Verwenden der Artefakte dabei unterstützen, diese sachgemäß anzuwenden. Durch Warnungen und sogar Fehler kann die Code-aware Library den Entwickler führen, wie die Bibliothek anzuwenden ist. Darüber hinaus können auch Vorschläge unterbreitet werden, wie diese Fehler zu beheben sind.

Ein Anwendungsszenario kann wie folgt aussehen:
Eine Nutz-Bibliothek für Datenbankzugriffe enthält eine öffentlich Klasse (DataAccess) mit zwei virtuellen Methoden um eine Verbindung mit der Datenbank aufzubauen namens InitializeBackend und InitializeDatabase. Es existieren weitere virtuelle Methoden um Informationen auszulesen, diese werden hier der Einfachheit nicht berücksichtigt. Am einfachsten ist es die zwei Methoden zum Verbindungsaufbau im Konstruktor aufzurufen. Dies führt jedoch zu einer “virtual member call in constructor”-Warnung. Dies lässt sich mit einer nicht-virtuellen Methode Initialize beheben, welche InitializeBackend und InitializeDatabase aufruft. In Abbildung 1 ist dies zu entnehmen. Der Anwender muss nun explizit die neue Initialize-Methode vor dem Abfragen der Informationen von der Datenbank aufrufen (siehe Abbildung 2). Eine Code-aware Library unterstützt den Entwickler an dieser Stelle. Diese kann den Benutzer vor dem Abfragen der Informationen darauf hinweisen, dass ein Initialize-Aufruf fehlt. Und schlägt auch noch gleich vor diesen Aufruf einzufügen.

Code_incorrect
Abbildung 1: Inkorrekte Klasse

Code_correct
Abbildung 2: Korrigierte Klasse

Code-aware Librarys sollten nicht mit dem Endprodukt ausgeliefert werden. Dies kann auf unterschiedlich Art und Weise erfolgen. Einerseits können Code-aware Librarys mit der eigentlichen Bibliothek als NuGet-Paket verteilt werden. Die Code-aware Library wird dabei nicht als Referenz dem Projekt hinzugefügt, sondern als “Analyzer”-Referenz. Andererseits können diese auch als VSIX verteilt werden. Als weitere Option können Code-aware Librarys über die GUI einem Projekt manuell hinzugefügt werden. Dies ist in Abbildung 3 zu sehen:

image
Abbildung 3: Hinzufügen eines Analyzers in ein Projekt

Fazit

Code-aware Librarys sind ein gutes Mittel um das Verständnis für Bibliotheken zu erhöhen und potentielle Fehlerquellen schon während des Schreibens von Code zu identifizieren. Sie ersetzen jedoch keine Dokumentation.

Holger Sirtl: Azure News on Friday (KW33/15)

Auch letzte Woche gab’s wieder viele Nachrichten zur Microsoft Azure Plattform. Hier sind nähere Infos dazu…

Aktuelle Neuigkeiten

Datum Nachricht
14.08. Schema Agnostic Indexing with Azure DocumentDB
Schema-unabhängige Indizierungen in Azure DocumentDB
13.08. Azure API Management Policy Expressions 101
Wer darf wie, wann und wie oft auf meine API zugreifen? Azure API Management Policy Expressions legen das fest
13.08. Azure Media Player update with multi-audio stream support
Im Azure Media Player kann jetzt während der Wiedergabe zwischen mehreren Audio-Streams umgeschaltet werden
13.08. Announcing Geospatial support in Azure DocumentDB!
Geospacial meets DocumentDB - räumliche Informationen in Azure DocDB speichern und über SQL abfragen
13.08. Azure DocumentDB bids fond farewell to Self-Links
Neue Adressierungsmöglichkeit von JSON Dokumenten in Azure DocumentDB via UriFactory (generiert eine Doc-URI)
13.08. What is this thing called Big Data?
Big Data im Zusammenspiel mit PowerBI erklärt.
13.08. How Well Do You Use Cloud Economics In Your Cloud Strategy?
Kosten sparen oder neue Geschäftsmodelle umsetzen? Azure kann beides, wenn man es richtig zu nutzen weiß
12.08. Update: Azure Media Indexer v1.3.2
Für den Azure Media Indexer gibt es eine Aktualisierung mit einigen Bugfixes und Erweiterungen.
12.08. Azure Data Factory is generally available
Die Azure Data Factory zum Aufbau von Datenstrom-basierten Workflows ist ab sofort allgemein verfügbar
12.08. Azure Backup enables backup of large volumes, VMs, databases and more
Die Maximalgröße von Datenspeichern, die mit Azure Backup geschützt werden können, wurde deutlich von 1700 GB auf 54400 GB erhöht.
12.08. New CDN features – country filtering, compression and analytics
Neue Funktionen im Azure CDN - länderbasierte Beschränkung der Auslieferung, Inhalte-Komprimierung und Analytics
12.08. Azure Files Preview Update
Updates bei Azure Files - serverseitige Kopien, Shared Access Signatures, Quotas bei Share Größen, CORS etc.
12.08. Now in public preview: The Converged Microsoft Account and Azure Active Directory Programming Model
Für Microsoft Accounts und Azure AD Identitäten gibt es jetzt ein vereinheitlichtes Programmiermodell.
11.08. Introducing the new Microsoft Remote Desktop Preview app for Mac
Für den Mac (ab iOS 8.1.0) ist ab sofort eine Remote Desktop Preview App verfügbar
11.08. Becoming a Power Power BI User in 7 Quick Steps
In 7 Schritten zum Power Power BI Anwender...
11.08. Managing multiple Azure SQL Databases just got easier with Elastic Database Jobs
Elastic Database Jobs ermöglichen jetzt die Verwaltung von Datenbanken-Gruppen (eines Elastic Pools)
11.08. Azure HDInsight now available in the Azure Preview Portal
Azure HDInsight ist jetzt auch im Azure Preview Portal verfügbar
11.08. Update on .NET Framework 4.6 and Azure
.NET Framework 4.6 wird ab sofort im Azure App Service und in Azure Cloud Services unterstützt
10.08. Using App Service Web Apps continuous deployment with GitHub organizations
Ab sofort wird Continuous Deployment von GitHub-verwalteten Anwendungen in Azure App Service Web Apps im Preview Portal unterstützt.
10.08. Azure Storage Release – Append Blob, New Azure File Service Features and Client-Side Encryption GA
Neue Funktionen in den Azure Storage Librarys - Unterstützung für Append Blobs, File Service, Client-seitige Verschlüsselung etc.

Neue Videos

Datum Nachricht Video
14.08. Episode182: Usage and RateCard APIs with Moinak Bandyopadhyay
Ressourcen-Verbrauch und Abrechnungsdetails mit den neuen Azure Usage und RateCard APIs auslesen
13.08. How the viral internet site "How-Old.NET" was created and scaled with Corom Thompson
Hintergründe zur Umsetzung der Website How-Old.net - Details zu Azure Machine Learning, Skalierung etc.
11.08. Tuesdays with Corey: Chat with a Microsoft Datacenter Architect
Corey unterhält sich mit Michael Sweeney, Principal Datacenter Architect, über Details zu Azure Rechenzentren

Dmitrij Doberstein: Anroid >>> create simple custom progress-bar (circle)

Per default, you can not modify progress bar in Android, also for example change color. Therefore, we must create our own progress bar.

Step 1: create your circle progress bar image, e.g. with Gimp. And save it as wheel.png



Step 2: create mywheel.xml

<rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:drawable="@drawable/wheel"    android:pivotX="50%"    android:pivotY="50%"    android:layout_height="wrap_content"    android:layout_width="wrap_content"    android:fromDegrees="0"
/>

With "duration" we can control the speed of the animation

Step 3: add ProgressBar to the View.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivityFragment"    android:background="@android:color/holo_blue_light"    >

<ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/progressBar" android:layout_centerVertical="true" android:layout_centerHorizontal="true"
        android:indeterminateDuration="1080"
android:indeterminateDrawable="@drawable/mywheel"
/>

</RelativeLayout>



Sven Hubert: Neu in VS 2015 – Shared Projects

Bereits mit Visual Studio 2013 Update 2 und einer Extension konnte Code über mehrere Projekte geteilt werden. Mit Visual Studio 2015 steht diese Funktion und das damit verbundene Projekttemplate von Haus aus zur Verfügung. Das Teilen einer gemeinsamen Codebasis innerhalb Solutions kann nun einfach und visuell erfolgen. Doch was sind die Unterschiede von Shared Projects und wie verhalten sich diese?

Was sind Shared Projects?

Shared Projects sind in Visual Studio 2015 eigenständige Projekttemplates und können einer Solution hinzugefügt werden. Ein Shared Project kann als eine Art Container für Dateien betrachtet werden, der innerhalb einer Solution geteilt und in einem eigenen Projekt verwaltet wird.

13-08-2015 15-28-31

Shared Projects haben ein eigenes Projekticon, wodurch sie leicht zu unterscheiden sind von herkömmlichen Referenzen. Auch werden sie im Visual Studio als eigener Referenztyp behandelt und können so von den anderen Referenzen getrennt eingebunden werden.

13-08-2015 17-02-40

Was ist der Unterschied?

Der geteilte Code kann von verschiedenen Anwendungsprojekten referenziert werden. Er wird als Teil der Projektreferenz kompiliert und kann compilerspezifische Anweisungen beinhalten. Shared Project generieren keine Assembly als Output (DLL/Exe) und damit auch keine eigenständige Version. Die gemeinsame Codebasis wird als Teil der referenzierten Software ausgeliefert.

Was ist der Vorteil?

Die Wiederverwendung von Code bei gleichzeitigem Multiplattformsupport ist heutzutage eine häufige Anforderung, welche nicht leicht umzusetzen ist. Soll Code für mehrere Plattformen verwendet werden, muss die Entwicklungsplattform Möglichkeiten anbieten dies umzusetzen. Shared Projects sind eine dieser Möglichkeiten und erlauben Software-Architekturen, das Teilen einer gemeinsamen Codebasis und Verwendung plattformspezifischer Elemente.

untitled

Quelle: http://developer.xamarin.com/guides/cross-platform/application_fundamentals/pcl/introduction_to_portable_class_libraries/

Was sind die Nachteile

Da ein Shared Project keinen eigenen Output besitzt, sollte er auch nur innerhalb einer Solution geteilt werden. Betrachtet man das Thema Release Management und muss eigenständige Versionen einer solchen gemeinsamen Codebasis anbieten, stellt sich schnell die Frage, ob der fehlende Output kein Nachteil ist. Sollte der Code dieser Art auf einer größeren Ebene geteilt und von verschiedenen unabhängigen Stellen referenziert und konsumiert werden, so muss für die Veröffentlichung dieses geteilten Codes eine eigene Versionsnummer existieren, welche Shared Projects nicht bieten.

Fazit

Shared Projects sind eine neue Art der Bündelung einer Codebasis und helfen, gemeinsam verwendeten Code als solchen darzustellen und anderen Projekten bereitzustellen. Die Verwendung von plattformspezifischen Direktiven ermöglicht eine hohe Integration für den geteilten Code. Unterliegt der geteilte Code jedoch einem eigenen Prozess zur Veröffentlichung, so kann eher weniger auf die eigene Versionierung verzichtet werden.

Weiterführende Informationen:

Marco Scheel: Links for 2015-08-16 [del.icio.us]

codefest.at [MS]: Was ist denn eigentlich dieses Azure Ding da?

Wenn Ihr euch das beim Überfliegen unserer Webseiten manchmal fragt, dann habe ich hier ein interessantes Angebot für Euch: Kommt in eines unserer beliebten Azure Onboarding Camps und wir zeigen Euch was man mit Azure so alles machen kann!

Am Anfang war die Cloud - Ihr Weg zu kosteneffektiven und sicheren IT Dienstleistungen

Oliver Lintner zeigt neben einer allgemeinem Einführung in die Welt von Microsoft Azure anhand von zwei konkreten Beispielen die einfache Handhabung und die Vorteile von Microsoft Azure (Microsoft Skill Level 100-200).

Nächster Termin: Mittwoch, 09. Spetember, 09:00 – 13:00
Anmelden: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032649655&Culture=de-AT&community=0

Wir beginnen mit der Anlage eines Microsoft Azure Abonnements und betrachten dann wie Microsoft Azure typische Unternehmensanforderungen ermöglicht:
• Kostenersparnis
• Erhöhung der Agilität und
• Maximierung der Sicherheit durch Auslagerung von Webanwendungen

Wenn Ihr Euch mit Microsoft Azure schon ein bisschen auskennt, dann kommt doch einfach nur am Nachmittag vorbei. Als separate Veranstaltung bieten wir mit AzurePR!ME direkt im Anschluss die Möglichkeit uns bei der vertiefenden Betrachtung eines Azure Teilbereiches zu begleiten (Microsoft Skill Level 200-300).

AzurePR!ME - Azure App Service

Erstes AzurePR!ME Schwerpunktthema: "Azure App Service"

Bei Azure App Service handelt es sich um eine Cloudplattform, mit der man leistungsfähige und intelligente Web- und mobile Apps entwickeln kann. Diese Plattform unterstützt einen u.a. schnell und einfach Web-Apps, die sich problemlos skalieren lassen, sowie beeindrucke mobile Apps zu erstellen, als auch Geschäftsprozesse abzubilden und zu automatisieren.

Wir sprechen mit den Azure Onboarding Camps sowohl Kunden als auch Partner an. Es kann dabei etwas technischer werden insbesondere bei den HandsOn Teilen, wobei der Vortrag auch einen guten Überblick für technisch weniger bewendete gibt.

Hier nochmals die Daten;

Viel Spaß!!

Martin Hey: Proguard und Realm.IO

In einem Projekt habe ich mal Realm ausprobiert. Dabei handelt es sich um eine alternative Datenbank, die verspricht die Wiederverwendung von Code aufgrund gleicher Model-Klassen sowohl in IOs als auch in Android hoch zu halten.

Detaillierte Erfahrungsberichte dazu kommen sicher in einem späteren Post.

Zunächst gab es eine kleiner Überraschung nach der Aktivierung von Proguard. Der Hersteller gibt folgende Konfiguration an:

-keep class io.realm.annotations.RealmModule
-keep @io.realm.annotations.RealmModule class *
-dontwarn javax.**
-dontwarn io.realm.**
Allerdings erreichte mich dann bei der Ausführung folgende Exception:
java.lang.IllegalArgumentException: class io.realm.internal.d declares multiple JSON fields named c
    at a.a.a.b.a.q.a(Unknown Source)
    at a.a.a.b.a.q.a(Unknown Source)
    at a.a.a.j.a(Unknown Source)
     .....
Heißt, die korrekte Proguard-Konfiguration sollte dieses Package wohl besser auch von der Obfuskierung ausschließen:
##---------------Begin: proguard configuration for Realm  ---------- 
-keep class io.realm.annotations.RealmModule -keep @io.realm.annotations.RealmModule class * -keep class io.realm.internal.** { *; } -dontwarn javax.** -dontwarn io.realm.** ##---------------End: proguard configuration for Realm ----------

Sven Hubert: Enhance the power of your TFS – TFS ASAP now available for TFS 2015 and TFS 2013.5

We are proud to present the new release for the TFS Automated Servicing and Administration Platform (TFS ASAP) powered by AIT. Beside some minor bug fixes, this version supports the update 5 of Microsoft Team Foundation Server 2013 and the TFS 2015 RTM. In addition there are two new automations available!

TFS ASAP is a reliable platform for advanced administration and extensions of Microsoft’s Team Foundation Server. It serves as a central management location for server-side event-based and scheduled automations such as aggregations as well as administrative extensions such as self-service team project creation and configuration web pages.

At http://www.tfsasap.com/editions.html there is an overview of all available features. The first new feature is called “Remaining work automation”. It has already been released for TFS ASAP online, our free of charge version for Visual Studio Online. This feature has already been explained in a former blog post. There is already an automation for basic calculations (adding to field values for example) in TFS ASAP. The new feature, called “Advanced numeric calculation”, is taking this one step further. It is now possible to extend calculations by using constants, thresholds and weightings for each parameter. Additionally a maximum value for the calculation result can be defined. But why?

There are use cases where the priority of a work item depends on multiple values. A bug for example can be evaluated by multiplying its severity, frequency and relevance. But the three parameters may not be equivalent to each other. So the values must be weighted. This can be achieved by defining a weight-factor for each parameter. If there must be thresholds for one or more parameters the can also be configured. If one threshold is exceeded or undershot, the calculation result is set to a predefined value. In the case of a defect the calculation could be configured to set the maximum priority if the severity reaches its maximum, no matter what the other two values are. In the following figure the effect of using the threshold can be seen. Changing one parameter can move an item from the last to the first position in your backlog.

image

Rank = Severity * Frequency * Relevance

Rank_max = 100

Relevance_Threshold > 4

As this automation can contain some of your companies’ business logic it is a very powerful feature. Prioritizing your backlog regarding multiple key figures can be a big step towards a more efficient software development process. Do you want to know how to increase the number of omitted activities by using TFS ASAP? Visit the homepage at http://tfsasap.com or contact us at support@tfsasap.com.

For those who are already using Visual Studio Online, there is our online version TFS ASAP online. This one is free of charge and does not require any installation. To take a closer look at TFS ASAP online please visit http://tfsasaponline.aitag.com.

Sven Hubert: Neu in VS 2015 – WPF Tree Visualizer und Application Timeline Tool

Microsoft stellt wieder einmal unter Beweis, dass die Wünsche und Anregungen der Community ernst genommen werden. Beständig wurden in der Vergangenheit Debugging Tools und bessere Integration in Visual Studio für XAML und insbesondere WPF gefordert. Mit Visual Studio 2015 hat sich an dieser Stelle einiges getan. Heute möchten wir kurz und knapp die wichtigsten Neuerungen im Bereich UI Debugging Tools vorstellen.

WPF Tree Visualizer

Wer WPF Anwendungen entwickelt, kommt früher oder später in die Situation, in der eine genauere Untersuchung des Visual Tree von Nöten ist. Bisher wurde dazu meist die Hilfe von externen Tools, wie Snoop, in Anspruch genommen. Mit dem neuen, in Visual Studio 2015 integrierten, WPF Tree Visualizer ist das in Zukunft nur noch in speziellen Fällen nötig.

Der WPF Tree Visualizer teilt sich in zwei Teile: Den Live Visual Tree und den Live Property Explorer.

Das Live Visual Tree Fenster ist Teil des Debug Layouts von WPF Anwendungen. Das bedeutet, es kann wie alle anderen Fenster auch als Teil des Docking Window Konzepts genutzt werden. Damit fügt es sich, anders als externe Anwendungen, in die bekannte Oberfläche ein und kann entsprechend komfortabel genutzt werden.

image

Die Auswahl der WPF Elemente erfolgt entweder per Klick auf das entsprechende Element, direkt in der Anwendung, oder über die Elemente im Visual Tree selbst. Dabei können auch Details wie Margins und Alignments direkt in der Anwendung angezeigt werden. Zusätzlich kann auf Wunsch direkt zum zugehörigen Quellcode des Elements gesprungen werden.

image

Neben der Analyse der Struktur einer WPF Anwendung bietet der Live Visual Tree auch die Möglichkeit, alle Properties der ausgewählten Elemente anzuzeigen und zu bearbeiten. Dazu wird ein neues Fenster, der Live Property Explorer, geöffnet. In diesem Fenster werden die einzelnen Properties nach ihrer Herkunft gruppiert. Somit ist auf den ersten Blick zu erkennen, ob ein Property lokal gesetzt oder beispielsweise durch Vererbung definiert wurde. Dabei ist die Auswahl an Properties, die bearbeitet werden können, auf lokale Properties beschränkt.

image

Laut der Roadmap für WPF soll eine zukünftige Erweiterung die Möglichkeit bieten, im Debug Modus geänderte Properties auch wieder in den Code zu übertragen. Diese Neuerung ist in der aktuellen Visual Studio 2015 Version jedoch noch nicht enthalten.

Application Timeline Tool

Eine weitere Neuerung, die mit Visual Studio 2015 eingeführt wurde, ist das Application Timeline Tool. Dieses ersetzt das mit Visual Studio 2013 eingeführte XAML UI Responsiveness tool. Damit werden jetzt sämtliche XAML Anwendungen unterstützt, was WPF Applikationen miteinschließt.

Das Application Timeline Tool kann im Fenster Debug -> Start Diagnostic Tools without Debugging geöffnet werden. Daraufhin startet die ausgewählte Applikation im Profiler und beginnt Daten zu sammeln. Die Applikation kann jetzt benutzt werden, um bestimmte Szenarien aufzuzeichnen. Zum Beenden des Profilers muss der Stop Button des Profiler Fensters betätigt werden. Daraufhin öffnet sich die Übersicht und es kann mit der Auswertung begonnen werden.

image

Das Auswertungsfenster ist zweigeteilt. In der oberen Hälfte zeigen Graphen die Nutzung des UI Threads und den Visual Throughput an. Diese Ansicht erlaubt das Auswählen von bestimmten Bereichen sowie das setzen von Filtern auf bestimmte Events. Dadurch lässt sich schnell ein Überblick über den Performanceverlauf der aufgezeichneten Applikation erhalten.

Der Untere Teil des Fensters enthält eine detaillierte Liste der CPU Nutzung. Diese Liste ist nach den Events kategorisiert, welche die CPU Last erzeugt haben. Diese Kategorisierung lässt sich weiter aufteilen. So kann beispielsweise innerhalb eines Layout Events genau nachverfolgt werden, welche UI Elemente wie viele Ressourcen in Anspruch genommen haben.

image

Über diese Aufschlüsselung lassen sich Erkenntnisse gewinnen, die bei der Suche nach kritischen Performance Stellen sehr hilfreich sein können. Darüber hinaus kann über diese Detailansicht auch ermittelt werden, wie lange das Parsen der einzelnen XAML Files dauert und wie die Abhängigkeiten verlaufen.

Fazit

Der Live Visual Tree und Live Property Explorer können die Hauptfunktionen von externen Tools ersetzen und in die Oberfläche von Visual Studio übertragen. Dies erleichtert die Entwicklung von WPF Applikationen, insbesondere da man von ausgewählten Elementen und Properties direkt in den Quellcode springen kann. Solange aber noch nicht alle Funktionen, die externe Tools bieten, umgesetzt wurden, wird es nötig sein, auch weiterhin mit ihnen zu arbeiten. Es bleibt abzuwarten, welche Funktionen von Microsoft noch umgesetzt werden.

Das Application Timeline Tool ermöglicht es, detaillierte Informationen über die Performance einer WPF Anwendung zu erfassen und auszuwerten. Dabei bleibt es selbst aber angenehm leicht und komfortabel zu bedienen.

Weiterführende Informationen zur Benutzung der Tools:

MSDN Blog: Live Visual Tree

MSDN Blog: Performance Analysis Tool

Sven Hubert: Neu in TFS 2015 – Git Workflow

Obwohl die Anzahl der neuen Features für Git im TFS 2015 sehr überschaubar ist, so merkt man doch, dass Microsoft eine Integration erster Klasse vorsieht. Das heißt, dort wo es möglich ist, werden existierende Features des TFVC in Git nachimplementiert, aber auch komplett neue Features entwickelt.


So sind das im aktuellen Release:

  • Branch Policies wie „Gated Build“ und „Code Reviews“, diese basieren auf Pull Requests (direkte Pushes auf die Branches werden verboten). Diese Features sollten eigentlich allen TFVC Benutzern bereits bekannt sein. Es geht darum Commits erst nach einem Code Review oder erfolgreichen Build zuzulassen. Für einige waren sie sogar der Hauptgrund nicht auf Git zu wechseln. Microsoft ermöglicht mit TFS 2015 diesen Benutzern nun die Migration auf Git.
  • Neues Webinterface für Git „Branch Updates“:

 Blogpost-Git Workflow

  • Das Editieren im Browser ist nun möglich (übrigens auch für TFVC verfügbar).

 

Auch auf der Seite von Visual Studio 2015 gibt es neue Features. Dabei handelt es sich aber nur um Features die man sowieso erwartet (und wer Git außerhalb von Visual Studio benutzt auch schon kennt). Microsoft sorgt also auch hier dafür, dass die Git Integration erstklassig ist und die IDE seltener verlassen werden muss. Letzteres ist immerhin ein wesentliches Herausstellungsmerkmal von Visual Studio.

 

Nun wollen wir noch kurz auf die Frage eingehen ob und wann sich eine Migration auf Git lohnt (Eine ausführliche Behandlung zu diesem Thema würde sicher den Rahmen dieses Blog-Posts sprengen).

Die Antwort ist wie so oft „Ja“ und „Nein“. Git gibt dem Entwickler ein mächtiges Instrument in die Hand und es gibt bekanntlich das Sprichwort „With great power comes great responsibility“ (Aus großer Macht folgt große Verantwortung). Für viele Unternehmen ist es deshalb sicher sinnvoll bei einem zentral verwalteten System zu bleiben.

Andererseits kann Git durch seine Mächtigkeit und Leichtgewichtigkeit neue Dynamiken in den Entwicklungsalltag bringen (was aber natürlich einen gewissen Lernaufwand einfordert):

  • Trennen von Push und Commit (siehe „Branch Update“ von oben):
    • Arbeiten an einem Feature in einem getrennten Branch oder sogar Server sind möglich.
    • Auch kann man jetzt noch Nacharbeiten vor dem Push erledigen (Commits zusammenführen, editieren usw.).

    Damit ergeben sich folgende Vorteile:

    • Man kann sich bei der Entwicklung auf ein Feature konzentrieren und „später“ dann für eine „schöne“ History sorgen.
    • Man kann viel öfter Commiten (auch aktuell unfertige Sachen, Teilfeatures) um lokal mit kleineren Diff’s arbeiten zu können. „Commit early, Commit often“. Bei TFS ist immer die Veröffentlichung an den CheckIn gebunden.
  • „Do things how they meant to be“
    • Ein Repository sollte eine logische Einheit bilden.
      • Braucht man spezifische Zugriffsrechte für spezifische Ordner ist womöglich das Repository zu groß und sollte aufgeteilt werden.
      • Shared Code sollte in ein neues Repository auslagert werden.
    • Keine (großen) Binärdateien einchecken sondern zur Build-Zeit auflösen (zB. von NuGet). Git ist viel mehr eine Quellcodeverwaltung als eine allgemeine Versionsverwaltung.
    • Das Branching von Git ist leichtgewichtig.
      • Oft werden keine Branches genutzt weil sie zu aufwendig zu Erstellen oder zu Mergen sind. Bei Git ist ein Branch sehr leichtgewichtig und damit auch sehr schnell erstellt, gelöscht und gemergt. Tatsächlich ist aus Sicht von Git alles ein Branch: Remote Branches, Lokale Branches (inklusive lokaler Abbilder von Remote-Branches), Stash (Shelveset), Arbeitsverzeichnis usw.
      • Schnelles hin und herwechseln zwischen Branches (man benötigt keine Workspaces wie bei TFVC).
  • Die Quellcodeverwaltung immer vollständig lokal verfügbar. Dies hat interessante Implikationen:
    • Man kann auf mehrere Server pushen, kein Server ist dabei „speziell“. So kann man, wenn man bereits Git nutzt, nun sehr einfach ein TFS Team Projekt anlegen, sein Projekt pushen und den TFS 2015 mit all seinen Features einfach mal ausprobieren!
    • Man kann offline mit jeder Version vergleichen.
    • Man kann offline den vollständigen Verlauf einer Datei einsehen sowie nachvollziehen wo welche Zeile herkommt (git blame).
    • Man kann offline commiten.
    • Man kann offline neue Branches anlegen.
    • Man kann offline Branches wieder mergen und löschen.
    • Insbesondere sind all diese Aktionen nur durch die Geschwindigkeit des Rechners beschränkt (und nie durch eine etwaige Internetverbindung). Dadurch ist das Arbeiten mit Git wesentlich schneller und angenehmer.

 

Ob eine Migration Sinn macht hängt aber vom Einzelfall ab. Sollte einer der obigen Vorteile wichtig genug für den Umstieg sein, so sollte, gerade wegen dem zweiten Punkt, bedacht werden, dass ein gewisser Aufwand in der Migration entstehen kann. Oft sollten Projekte umstrukturiert, oder in mehrere Projekte aufgeteilt werden um einen maximalen Nutzen aus Git zu ziehen! Der Nutzen aus Git entsteht dabei in erster Linie langfristig.

 

Weitere Informationen (auch zu noch mächtigeren, hier nicht weiter ausgeführten Features von Git) finden sich hier:

 

Kay Giza [MS]: Microsoft Stellenangebote: Event- und Marketing Manager, DreamSpark Academic Program, BizSpark Startup Program Specialist

Derzeit suchen wir bei uns in der Abteilung einige neue Kolleginnen und Kollegen. Meine Abteilung ist die Developer Experience & Evangelism (DX) -Group innerhalb der Microsoft Deutschland. U.a. sind derzeit diese Stellen bei uns im Team vakant. Bei Interesse bitte direkt auf der Webseite bewerben oder mich gerne kontaktieren... [... mehr auf Giza-Blog.de]


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

Norbert Eder: C# 6: Neuerungen im Überblick – Serie

In C# 6 hat es einige Veränderungen gegeben. Diese Serie beschreibt die wichtigsten Neuerungen und zeigt diese exemplarisch.

Viel Spaß beim Erkunden der neuen Möglichkeiten.

The post C# 6: Neuerungen im Überblick – Serie appeared first on Norbert Eder.

Code-Inside Blog: Reg.exe or how to import .reg files without admin privileges

The beloved Registry is still an important part of Windows, because of COM, protocol mappings, program registrations etc. - so, even in 2015 we might have to deal with it.

Problem: Writing some Registry keys without admin privileges

Everytime I need to fiddle around in the Registry I use “RegEdit”, but “RegEdit” needs admin privileges - because it can change everything (as far as I know). The fun part is: Not all hives (the trees inside the registry-tree-structure) needs admin permissions. A typical user has the following permissions:

  • Read on HKEY_CLASSES_ROOT (which is just a combinded view over the classes of HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE)
  • Read and write on HKEY_CURRENT_USER
  • Read on HKEY_LOCAL_MACHINE
  • Read on HKEY_USERS
  • Read on HKEY_CURRENT_CONFIG

So, if I want to write a key under the HKEY_CURRENT_USER with a normal user account it should be possible, but how?

Solution 1: Via Code

Code something via the Registry-APIs in .NET (or any other language…) and it should work, without messing around with admin stuff or turing off the UAC, which is really a stupid idea.

Solution 2: Via reg.exe

Create a .reg file and try reg.exe. Syntax like:

reg.exe import myregfile.reg

I discovered reg.exe and found it really handy, because it is very flexible and a .reg file can easily be written without much coding.

Reg.exe is shipped with Windows since… mh… like forever and should be safe to use.

Solution 3: Combine the two other solutions

Of course you could invoke reg.exe also via code. This way you can still use any .reg file, but “embed” it inside your application.

string path = "\"" + filepath + "\""; 
using (var process = new Process())
{
    try 
    { 
        process.StartInfo.FileName = "reg.exe"; 
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
        process.StartInfo.CreateNoWindow = true; 
        process.StartInfo.UseShellExecute = false; 
        string command = "import " + path; 
        process.StartInfo.Arguments = command; 
        process.Start(); 
        process.WaitForExit(); 
    }   
    catch (System.Exception) 
    { 
        // log...?
    }
}    

Hope this helps!

friends header

bloggers headline

links header

 
Don't contact us via this (fleischfalle@alphasierrapapa.com) email address.