Thursday, December 24, 2015

Upgrading to NUnit 3.0 - OneTimeSetUp: SetUpAttribute attribute not allowed in a SetUpFixture

After upgrading to NUnit 3.0, which became recently available, some of my tests started to fail.

When I look at the test results, they all failed with the following error message:

SetUpAttribute attribute not allowed in a SetUpFixture

In NUnit 3.0, there are some breaking changes regarding the usage of the SetUpAttribute and the SetUpFixture.  You can no longer use the SetUpAttribute and TearDownAttribute inside a SetUpFixture. Instead you have to use the OneTimeSetUpAttribute and OneTimeTearDownAttribute.

In NUnit 2.0, I had the following code:

In NUnit 3.0, this has to change to:

More information can be found here:

Wednesday, December 23, 2015

Open Live Writer re-introduces Blogger support

Last week I blogged about the release of Open Live Writer, the open source fork of Windows Live Writer. I also mentioned that Google decided to pull the plug from the old authentication system, making neither Windows Live Writer and Open Live Writer available for usage with Blogger anymore.

One week later, and thanks to the power of open source, I’m happy to say that I can write my blog post in Open Live Write again(the online Blogger editor wasn’t a pleasant experience). In the timespan of a week Martin Woodward made 3 new releases each improving the Blogger integration:

So thanks Martin for this early Christmas present!

Tuesday, December 22, 2015

RedBook - Readings in Database Systems

Almost every application uses data. Without this data the application is useless. So if you are a DBA, SQL specialist or developer, you should care about data and how it is stored.

This makes 'Readings in Database Systems' a must read:

Readings in Database Systems (commonly known as the "Red Book") has offered readers an opinionated take on both classic and cutting-edge research in the field of data management since 1988.

Monday, December 21, 2015

TFS 2015: The 'System.Collections 4.0.10' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.

After upgrading an existing solution to the new build system in TFS 2015, the build failed with the following errors:
The 'System.Reflection.Extensions 4.0.0' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.Reflection.Primitives 4.0.0' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.Resources.ResourceManager 4.0.0' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.Collections 4.0.10' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.Diagnostics.Debug 4.0.10' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.IO 4.0.10' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.Reflection 4.0.10' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.Runtime 4.0.20' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.Runtime.Extensions 4.0.10' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
The 'System.Runtime.InteropServices 4.0.20' package requires NuGet client version '3.0' or above, but the current NuGet version is '2.8.60318.667'.
 It seems that the build server tries to use the 'old' NuGet version instead of the newer 3.x version.

Here is how I solved it:
  • Open your in Team Project in the TFS portal and click on the Build tab
  • Edit the build definition by right clicking on the build and choose Edit... from the context menu
  • Uncheck the 'Restore NuGet packages' checkbox in the Visual Studio Build step

  • Add a new step by clicking on the  'Add build step...' button. Choose the NuGet Installer step in the Package category and click Add. Place this step before the other steps.

  • Open the newly created step, go to the Advanced section and set the path to NuGet.exe(e.g. d:\tools\nuget.exe).

  • Now login on the build server and download the NuGet distribution from Place it on the location as specified in the step.
  • That's it!

Friday, December 18, 2015

Azure DocumentDB playground

If you want to learn about Azure DocumentDB, Microsoft's NOSQL solution in the Cloud, go take a look at the DocumentDB Query Playground. It gives you an interactive environment to try the rich querying functionality that Azure DocumentDB offers over schema-free JSON data.

Thursday, December 17, 2015

SQL Server Performance issues after upgrading from Team Foundation Server 2010 to 2015

After upgrading a Team Foundation Server 2010 environment from a customer to Team Foundation Server 2015, we noticed an enormous spike in CPU and memory usage on the database server.

When we drilled further into the issue, we saw the same SQL Server statement being executed over and over again:

On the MSDN forums, we found some more information. This is a bug in the TFS 2015 upgrade process that only seems to exist when you upgrade from TFS 2010.

A SQL script is available that solves the problem, but the issue is also fixed in TFS 2015 Update 1. So I would recommend that if you have this issue, upgrade to Update 1.

Wednesday, December 16, 2015

TechNet Virtual Labs

If you want to test a Microsoft product in a risk free environment, try TechNet Virtual Labs. It offers a wide range of virtual environments for testing Microsoft's newest products and technologies.

I forgot that this existed, until a colleague sent an email about it(Thanks Joeri).

So if you want to play with for example the Team Foundation Server 2015 bits but don't want to put it on Azure or download and run a VM locally, just search for 'Team Foundation' and a large set of VMs and labs are available.

Great stuff!

Tuesday, December 15, 2015

Cloud Scalability Patterns

Great conversation with Matt Johnson from the Patterns and Practices group, about things we should consider when moving our applications to the cloud. If you want to build your application for cloud scale, this video offers some great insights.

Don't forget to take a look at the links he referred to:

Monday, December 14, 2015

Google did it again - Not found error in Windows Live Writer and Open Live Writer

In the summer of 2015, Google turned off there old authentication system and made the switch to OAuth 2.0. Although better security can only be encouraged in this case it had the unfortunate side effect to break Windows Live Writer, the blog writer I used for years. Luckily, thanks to the effort of Scott Hanselman, Google was kind enough to re-enable the old security mechanism for a little bit longer. In the meanwhile Scott started the effort to make Windows Live Writer Open Source.
Last week this story came to an end with the announcement of Open Live Writer, an open source fork of Windows Live Writer. Although some features are still missing, this is great news as it will give Windows Open Live Writer a new future...

Inside the announcement, the support for OAuth 2.0 was mentioned as to be added 'VERY SOON':

ADDING VERY SOON: Google runs the excellent Blogger blog service. We've worked with the Blogger Team within Google on this project, and they've been kind enough to keep an older authentication endpoint running for many months while we work on Open Live Writer. Soon, Google and Blogger will finally shut down this older authentication system. Blogger will use the more modern OAuth 2 and Open Live Writer will be updated to support OAuth 2. Windows Live Writer will never support this new OAuth 2 authentication system, so if you use Blogger, you'll need to use Open Live Writer.
Unfortunately the Blogger guys didn't read the announcement very well I think, as they disabled the old authentication endpoint immediatelly :-( So if you try to connect to Blogger using either Windows Live Writer or Open Live Writer, you'll get a 'Not Found' exception.
I hope a fix will be available soon as typing in the online editor ain't fun!

Friday, December 11, 2015

Architecture Blueprints for Microsoft Azure

If you are an architect that want to use the power of Microsoft Azure, Microsoft created a set of architecture blueprints for different scenario’s that help you build new solutions fast. For every diagram, a 2D and 3D version(in Visio) and a video explaining the blueprint is available.

Certainly useful!​

Thursday, December 10, 2015

Visual Studio 2015 Update 1–Parallel Test Execution

If you are still looking for an excuse to start installing Visual Studio 2015 Update 1, here I got you one: a new feature that existed before but is now finally back in the box is Parallel Test Execution.

What is it?

From the release notes:

The Visual Studio Test Platform introduces support parallel execution of test cases.

Parallel test execution leverages the available cores on the machine, and is realized by launching the test execution engine on each available core as a distinct process, and handing it a container (assembly, DLL, or relevant artifact containing the tests to execute), worth of tests to execute. The unit of scheduling is the test container. Within each container, the tests will be executed as per the semantics of the test framework. If there are many such containers, then as processes finish executing the tests within a container, they are handed the next available container.

Parallel execution is supported through all launch points - CI, command line (CLI) and the IDE (Test Explorer, CodeLens, various “Run” commands, etc.), and the Test Explorer indicators track the progress of tests executing in parallel.

Getting started
  • Open Visual Studio 2015(don’t forget to install Update 1 first Glimlach)
  • Open the solution containing the tests.
    • Note that in order to leverage the Parallel Test Execution features, tests should be split out over multiple ‘containers’(assemblies)
  • Go to Test –> Test Settings –> Select Test Settings File
  • Select the .testsettings file you want to use.
    • If you don’t have a .testsettings file yet, just create an empty xml file and change the extension to .testsettings


  • Open the file in Visual Studio via File –> Open—> File… –> Open With(click on the small arrow next to the Open button) –> XML Editor
  • Paste the following code:
  • Change the MaxCPUCount value according to the following rules:
    • ‘n’ (where 1 <= n <= number of cores) : up to ‘n’ processes will be launched.
    • ‘n’ of any other value : The number of processes launched will be as many as the available cores on the machine.
  • Now run your tests…

Remark: I noticed that it only worked for MSTest. When using NUnit or XUnit no tests were executed.

Wednesday, December 9, 2015

Goats and Leadership

What do goats and leadership have in common? The answer is … EVERYTHING as explained in the following YouTube video:

I found this video on the Nordstrom technology people lab website. Certainly worth to have a look…

Tuesday, December 8, 2015

Generate your test data

Over the years I used multiple tools to generate test data. Most the time I ended up creating some useful test data by hand or automatically generating random “gibberish”. Last week I discovered GenFu with has the following promising tagline “Awesome Test Data”.


GenFu is a library you can use to generate realistic test data. It is composed of several property fillers that can populate commonly named properties through reflection using an internal database of values or randomly created data. You can override any of the fillers, give GenFu hints on how to fill them.

For the following Person class…


…combined with one line of code…


…it generates the following test data…


Looks like magic to me! I’m going to try it out for my next set of unit tests…

Monday, December 7, 2015

Windows 10 Development Workshop

Interested in learning Windows 10 development? But you don’t know where to start? Check out the training material for the Hands on Workshop for Windows 10 Developer Training (pfew, what a title!)

From the GitHub repo:

The purpose of the Workshop is to provide a more interactive developer training experience that minimizes lecture in favor of more instructor led lab experiences.

Each module contains a minimal PPT deck and one or more 'hands on labs' for direct delivery in a classroom setting.

The lab manuals and solution files for this module have been moved. All hands on labs are now in their own repo at so that they can be easily downloaded independently of the slide decks.

The day long agenda consists of the following modules, each 60 minutes split between PPT and Lab

    Friday, December 4, 2015

    TypeScript 1.6–Interface errors

    This week, a colleague asked me to have a look at his code. He was working on a web project with some TypeScript code but the moment he opened the project hundreds of errors appeared. We discovered that he recently upgraded to TypeScript 1.6 and in this version the object checking rules became more strict:

    Before TypeScript 1.6 you could do something like this:

    Note that although the interface only defines 3 properties, the compiler doesn’t complain when I add an extra property to my object literal.

    In TypeScript 1.6 this is no longer the case, and an error is thrown when you add a property that is not part of the interface:



    You can suppress this error by passing the --suppressExcessPropertyErrors compiler option.

    Although I understand the reasoning behind this change, I’m not a fan of this behavior, as it breaks the dynamic nature of JavaScript.

    More information in the following GitHub issue:

    Thursday, December 3, 2015

    Visual Studio Team Services–Code Search extension

    With the introduction of the Visual Studio Marketplace, a growing list of great extensions for the Visual Studio ecosystem is coming to us.


    The first extension I installed was Code Search, it promises to “provide a fast, flexible and accurate search across your code” inside Visual Studio Team Services. Sounds great!


    After installing it, when you browse to your Visual Studio Online project(now renamed to Visual Studio Team Services), go to the Code tab and you should see a search box on the top right corner:


    The search offers a large set of functionality like:

    • Filters: filter by project, by location within a project, by scope, by code type


    • Code collaboration: share search results with other team members
    • Version control integration: lookup history

    Behind the scenes it is using the power of Roslyn to give you advanced search capabilities.

    Remark: The code search feature is free at the moment, but this can change after Preview.

    Wednesday, December 2, 2015

    TypeScript 1.5 Error–The ‘arguments’ object cannot be referenced in an arrow function

    After upgrading a TypeScript project to TypeScript 1.5, the build started to fail with the following error message:

    “Build: The ‘arguments’ object cannot be referenced in an arrow function in ES3 and ES5. Consider using a standard function expression.”


    This is the code snippet where the error occured:

    Starting from TypeScript 1.5 it is no longer allowed to reference the arguments object inside an arrow function. According to the specs, no argument variable is created for an arrow function.

    To fix this, we can follow the suggestion as mentioned in the error and switch to a normal function expression:

    More information in the following GitHub issue:

    Tuesday, December 1, 2015

    Visual Studio Team Foundation Server and Team Services Feature Index

    With the incredible pace that Microsoft is releasing new features, and the 3 week release cycle of VS Team Services(aka Visual Studio Online), it’s a challenge to know what features are available in the TFS ecosystem.

    To help us, Microsoft created a feature index with all the features available to help you plan and track your projects and code, build, test, and release your software applications.

    Great help!


    So bookmark this link: