Skip to main content


Showing posts from August, 2015

Visual Studio 2015–Enable NuGet Package Restore is gone

Yesterday when creating a new solution in Visual Studio 2015, I noticed that the ‘Enable NuGet Package Restore’ option had disappeared from the solution context menu. Whooops! What happened? On StackOverflow I found that Microsoft has dropped support for the 'Enable NuGet Package Restore' in VS2015. Starting from NuGet 2.7 the way NuGet Package Restore works has changed. By default the NuGet Visual Studio extension integrates into Visual Studio's build events and restores missing packages when a build begins. More information can be found in the NuGet documentation .

What defines a successful Scrum Master?

Over the years I worked with a lot of teams in different roles; as a developer, architect, tech lead, and so on…  Sometimes we were successful, sometimes we failed. With Agile becoming mainstream, the role of the Scrum Master is one extra role to add to the list. But as a Scrum Master, how do you know you are doing a great job? Different organizations are in different stages of an Agile transformation, teams are different, business is different,… Still there is a common ground and a set of practices that can help you succeed as a Scrum Master. Vasco Duarte wrote a great article about these practices useful for everyone in a Scrum Master role today. From the article : In order to help Scrum Masters create their own approach we have collected many different views in the Scrum Master Toolbox podcast and have collected some of them here for you to read and refer to in the future. Below you will find a list of 15 tools and approaches that Scrum Masters all over the world use.  E

Team Foundation Server 2015–New build agents–Installation issue

Yesterday I talked about the new agent based build system introduced in TFS 2015. I mentioned how easy it was to install them, … until you get into trouble. Today I encountered an issue when rolling out an agent on existing server. When I invoked the ConfigureAgent.ps1 script, it failed with the following message: PS C:\build> .\ConfigureAgent.ps1 Unblocking files The term 'Unblock-File' is not recognized as the name of a cmdlet, function, script file, or operable program. Check th e spelling of the name, or if a path was included, verify that the path is correct and try again. At C:\build\ConfigureAgent.ps1:12 char:52 + Get-ChildItem -Path $currentLocation | Unblock-File <<<<  | out-null     + CategoryInfo          : ObjectNotFound: (Unblock-File:String) [], CommandNotFoundException     + FullyQualifiedErrorId : CommandNotFoundException The term 'Unblock-File' is not recognized as the name of a cmdlet, funct

Team Foundation Server 2015– New Build Agents

Team Foundation Server 2015 introduces a new agent based build system(the old  XAML Workflow based system is still supported). From the website: “The new builds are web- and script-based, and highly customizable. They leave behind many of the problems and limitations of the XAML builds. For example, this new system embraces the diverse set of domain-specific languages (DSLs) that developers used to build the code on their dev machines. We expect this will reduce the chances of running into the "builds fine on my machine but not on the CI server" problem. For more details, see Overview of Team Foundation Build 2015 .” Installing these new build agents is easy: Open the TFS Web Access Click on the Administer Server icon in the right corner Click on the Collection at the top. (In my case ‘DefaultCollection’) Click on the Build tab Click on Download Agent to download the agent as a zip file Extract the zip file on your build server(choose a

Azure Runbooks gallery

In a true ‘DevOps’ spirit, we are evolving our TFS infrastructure from a manually configured environment to a fully scripted setup. One great resource are the Azure Runbooks , a large list of PowerShell scripts that allow you to automate the most common actions in Azure. These runbooks can be combined with Azure Automation helping you to automate your Cloud OS processes.

Enable EcmaScript 6 support in Visual Studio Code

Recently Microsoft announced the support for EcmaScript 6 in Visual Studio code. However when you try to use ES6 features, you get errors: Hovering over the error, gives some insight on how to fix this: We have to create or edit our jsconfig.json file and change the target to ES6. Add a new file and call it jsconfig.json . Add the following configuration settings: If you now go back to the code file, the errors are gone: Happy coding!

Start upgrading to .NET 4.5.2 or higher if you are on .NET 4.x

With the release of Visual Studio 2015 and .NET Framework 4.6, Microsoft did some important announcements regarding future support for .NET. If you are a .NET 4.x versions, starting from January 12, 2016 , Microsoft will only support .NET Framework 4.5.2 or higher. So if you are using .NET Framework 4, 4.5 or 4.5.1 start updating to .NET 4.5.2 before this date. As .NET 4.5.2 is an in place upgrade, the impact on your existing .NET 4.x applications should be limited. Remark: This is only relevant for the .NET 4.x stack, older versions of .NET remain supported. More information: The announcement: Installation info:

Visual Studio–Performance profiling a unit test

This morning when running my tests, I noticed that one test was really slow. You don’t want your test suite to be slow as people will stop running the tests when it takes too much time. So time to figure out what is causing this behavior. Turns out that this is is pretty easy in Visual Studio 2013 (and 2015): Open up the Test Explorer window Right click on the slow test and choose Profile Test . This will load a Performance Profiling session for the specific test.

Professor Frisby’s Mostly Adequate Guide to Functional Programming

Learning functional programming can be hard, especially if your mind is stuck for a long time in an object oriented world. Luckily there are some good books out there. One book I can recommend to learn the concepts of functional programming is ‘Professor Frisby’s Mostly Adequate Guide to Functional Programming’.  It’s a great resource with a lot of samples and small exercises. All examples in the book are using JavaScript which lowers the entry barrier as you don’t have to learn a new language.   Download the book here: Online: EPUB: Mobi (Kindle):

Be aware : Team Foundation Server 2015 Upgrade can take a long time

With the release of Team Foundation Server 2015, it’s time to upgrade our existing TFS 2013 environments. One warning before you start, upgrading to TFS 2015 can take a long time(depending on the size of your database), a lot longer than upgrading previous versions. The reason for this is that TFS 2015 includes schema changes to a large number of tables in order to support renaming team projects. If you want to minimize downtime, it is recommended to use TfsPreUpgrade.exe, a small tool that does the most expensive parts of the work to upgrade to TFS 2015 while your TFS 2013 deployment is still online. TfsPreUpgrade.exe works by creating new copies of the tables most impacted by the schema changes present in TFS 2015 and then migrating data from the original tables to the new copies. As TfsPreUpgrade.exe adds some triggers behind the scenes, it can have a negative impact on performance. So only run it when you will upgrade TFS in the near future. Remark: TfsPreUpgrade.exe can provi

Visual F# Power Tools

If you are an F# developer, this Visual Studio extension is a must have: Visual F# Power Tools . This extension offer a variety of features which makes your development experience so much easier. The feature list: Auto-generating XmlDoc Formatting document / Formatting selection Navigation bar Highlight references Rename refactoring Depth colorizer NavigateTo Syntax coloring Folder organization Find all references Implement interface Record stub generation Union pattern match case generation Resolve unopened namespaces Gray out unused declarations Gray out unused open declarations Go to metadata Task List comments Generate references for F# Interactive Navigate to source Quick info panel More information:

Checking if a WSDL is WSI compliant

After a long trip in REST land, I’m back in the SOAP and WSDL world. While creating a WSDL and XSD schema for a project I was asked to check the WSDL for WS-I compliancy. I removed the dust from SoapUI and loaded the WSDL: Create an empty project Right click on the project and choose Add WSDL : Click on Browse… and select the WSDL you want to import. Click OK . Right click on the loaded WSDL and choose Check WSI Compliance .

My favorite Visual Studio 2015 feature–PerfTips

If there is one feature I have to pick from the long list of new things added to Visual Studio 2015, it’s the PerfTips feature. Gone are all the stopwatches in your code, without the need of separate tools you get a simple performance measurement. No excuse any more to ignore the performance characteristics of your code… If you are using the debugger in Visual Studio 2015, you’ll notice a small tooltip in the editor at the end of the code line indicating how long the program was running since the previous step: You can click on this tooltip which will bring you to the Diagnostic Tools window where you can see the history of PerfTip values on the Debugger Events break track: More information here:

Decompile F# into C#

Let’s continue our journey in F# land that we started last week. On the I found a great blog post where language concepts were implemented in F#, decompiled to IL and compiled again to C#. This gives you a great insight(if you are a C# developer) in how the F# language works behind the scenes and all the work the compiler is doing for you. When you look at the results, the biggest differences can be found when looking at F# specific features like Record types and Pattern Matching . Generally, the F# code is much shorter than the equivalent C# code. It’s almost painful to see how much code you need to write in C#…

Generating unique identifiers across a set of server nodes

Distributed systems come with their own set of problems. One of these problems is the generation of unique identifiers across multiple nodes. You can rely on the database to generate a sequential guid, but this hinders scalability and makes your systems error-prone. While browsing through the MassTransit code base, I noticed they were using a separate NuGet package called NewId . NewId is a unique id generator with 2 important characteristics: Unique Id generation at a specific server can happen without interaction with other servers Id’s should be ordered(important for database optimization) It’s inspired by (the retired) Twitter Snowflake and Boundary Flake implementations. Certainly useful if you need to build scalable solutions…