The Oslo Spektrum closed its door for developers two weeks ago but
the good vibe of NDC Oslo is still in the air. The week of stimulating workshops and talks was a truly memorable experience and our PostSharp crew enjoyed every single minute of the conference.
We’re very grateful for the chance to be present at the venue and to meet with some of you in person and chat about the things we do. Kudos to the NDC organizational team who did an amazing job. Big thanks to everyone who attended Gael’s workshop, presentation or stopped by our booth to learn what mission we want to accomplish at PostSharp Technologies. Plenty of our sizeof(Code).Matters() t-shirts were given away and the lucky winners of PostSharp Ultimate licenses received their license keys last week.

Besides the great interactions, we also had a chance to see and get inspired by the amazing speakers and their talks. Here are some of those that you should certainly check out:

Code that Fits Your Brain by Adam Tornhill

An original take on how the code we write correlates with the way our brains work. Looking at the various programming languages you will see both some problematic constructs causing cognitive costs, and some successful ideas that help the code fit the human way of thinking. Especially relevant for us are the sections of the talk dedicated to working memory and representation: our brains tend to see the problems we solve in terms of patterns, while the most popular programming languages still do not allow us to write the code on the same level of abstraction on which we reason about the given problem.
Watch on Vimeo.

The Integrations We Fear and How We Can Manage Them by Karoline Klever

Integrating your project with a 3rd-party API can often become a painful experience and involves a number of risks. Karoline explains what these risks are and describes the steps you can take to defend your project from the low quality and unreliability of 3rd-party vendors. Use of the right tools is important to efficiently deal with the integration problems, and PostSharp comes to help when Karoline needs to add logging across her integration code.
Watch on Vimeo.

Patterns for the People by Kevlin Henney

Most people think they understand patterns because they know Singleton and went through the GoF required reading. Kevlin goes deeper; he debunks frequent misconceptions with strong arguments and beautiful slides, and make patterns alive. We built PostSharp to help coding with patterns at implementation stage and Kevlin was one of those whose books helped us building our vision.
Watch on Vimeo.


CPU Caches and Why You Care by Scott Meyers

Most of the programmers these days are working primarily with high-level languages. Spending so much time at the high level may give you an illusion that you’re well-guarded from the intricacies of the underlying hardware. Scott successfully dispels this illusion, by showing how performance of the high level code can suffer a lot if it doesn’t fit well with the caching model of the underlying CPU. You will learn a number of techniques allowing your code to make better use of different CPU cache types. PostSharp processes hundreds of thousands of instructions per second so performance is very relevant to us.
Watch on Vimeo.

Becoming an Outlier: Career Reboot for the Developer Mind by Cory House

One of the most inspirational talks of the whole conference. Cory reminds us just how important it is to spend our time on things we actually love doing. He also gives advice on how to take your programming career to the next level, become more satisfied with your job and make a bigger impact through your work.
Watch on Vimeo.


Taking Design Patterns to the Next Level by Gael Fraiteur

Last but not least, the presentation by our very own Gael Fraiteur. Patterns are essential to the way we human reason and communicate about the world. Although patterns are intimately married to natural languages, they did not make their way to programming languages. Gael shows how pattern thinking can be used at programming time, not just at design time, and how future programming languages could be improved to support patterns. PostSharp is shown as a precursor.
Watch on Vimeo.

So, what’s next for PostSharp? We’re working hard to bring you PostSharp 3.2 release soon and the odds are good you’ll get a chance to meet Gael in the fall at conferences and user groups. And of course, there’s one big event you don’t want to miss:
NDC London 2014 will be inspiring developers again the first week of December. Hope to see you there!

NDC Oslo 2014 is almost there. As every year, software developers will converge to Oslo. If you haven’t done it yet, watch David Appenborough’s fun documentary about this surprising seasonal migration.

PostSharp will have a strong presence with three team members, one workshop and one presentation!

NDC is connected with a few “firsts” for us: NDC 2011 was the finish line of the first PostSharp road tour ever. And this year will be the very first time we’ll have a booth! Well, this was quite an experience to get prepared to a conference of this size. We got new brochures, video loops and t-shirts, and you don’t want to miss this opportunity to meet Gael and the PostSharp team:

  • Pre-Conference Workshop on Monday, June 2nd: a deep dive from the horse’s mouth. Disclaimer: attendees may change the way they look at software development. It’s still time to register for your workshops if you haven’t done it yet.
  • Taking Design Patterns to the Next Level on Thursday, June 4th challenges popular dogmas about design patterns and shows how design pattern automation is possible today in .NET.
    The presentation starts at 9:00AM in Room 5.
  • You can meet us at our booth! We’d love to hear how we can improve what we’re doing and you'll get a chance to win some nice PostSharp gifts!

As every year, the 2014 speaker alignment is awesome; we hope to see you there!


We’re sorry to announce that a critical defect affects all builds of PostSharp versions 3.1.0-3.1.40 and 3.2.0-3.2.20. We strongly recommend all projects using PostSharp 3.1 to be upgraded to PostSharp 3.1.42.

Which projects are affected?

It is important to understand that the defect acts as a “time bomb”. You will be affected by the project even if (a) you did not modify its source code, (b) you did not upgrade PostSharp and (c) you did not install any Windows update.

Projects that (a) are bound to PostSharp 3.1.0-3.1.33 AND (b) that don’t cause PostSharp to emit an error or warning message are not affected.

Does the issue affect run-time behavior of applications built with PostSharp?

No. The defect only affects build-time behavior.

What are the symptoms of the error?

You may see one of the following symptoms, according to the kind of host:

  • With PostSharpHost=PipeServer (typically on developer workstations): “connection unexpectly closed by the server” followed by “Retrying to execute the pipe server” followed by “Error connecting to the pipe server. See previous warnings for details”

  • With PostShatpHost=Native (typically on build servers):

    • error MSB6006: "postsharp.4.0-x64.exe" exited with code -199

    • error MSB6006: "postsharp.4.0-x86.exe" exited with code -199.

    • error MSB6006: "postsharp.4.0-x64-cil.exe" exited with code -199

    • error MSB6006: "postsharp.4.0-x86-cil.exe" exited with code -199.

  • With PostSharpHost=Managed: The license dialog of Nove.CodeDOM appears.


Upgrade all projects using PostSharp 3.1.0-3.1.40 using NuGet Package Managers:

  1. Open the solution in Visual Studio

  2. Click on menu item Tools / NuGet Package Manager / Manage NuGet Packages for Solutions…

  3. Go to the Update tab.

  4. Update all PostSharp packages to version 3.1.42 or higher.

  5. Deploy the new source code to build server and team members.

Note: Updating the PostSharp Visual Studio Extension (VSiX) is not required and does not solve the issue.

What happens if I don’t upgrade the projects?

If you don’t upgrade the project, the issue may appear later, and your team may lose productivity in diagnosing it.

What is I don’t have an active maintenance subscription?

We “tricked” the 3.1.42 build so it is available to anyone who was properly licensed for PostSharp 3.1 RTM, even with an expired license subscription. You should then specifically upload to build 3.1.42. Other builds don’t have the license “trick”.

What is the cause of the defect?

The error is caused by the license enforcement component of Nova.CodeDOM, a library that we lawfully sourced from Inevitable Software. PostSharp uses this library to provide file and line number information of error messages.

Previously to 3.1.33, PostSharp initialized Nova.CodeDOM lazily, when the first error message needed to be resolved. Starting 3.1.33, PostSharp initialized Nova.CodeDOM unconditionally. This is why projects built with PostSharp 3.1.33 and later are more likely to be affected by the issue.

Why was this issue not anticipated?

We anticipated issues in the Nova.CodeDOM library and implemented a fail-safe behavior, so that a failure in the library would just cause a failure to locate the file and line number of error messages, but except of having no file and line information, the build would work as usually. However, we did assumed that all failures would be in the form of a managed exceptions. We did not anticipate that the library would terminate the process.

When did the symptoms first occur?

The issue first hit our support line on May 20th at 16:00, Central Europe Time. We became aware of the severity of the issue on May 21st at 10:00 when more support tickets were filed.

When was a fix released?

We uploaded the build 3.1.41 fixing this issue on May 21st at 14:00, Central Europe Time.

Completed in a rush, this build contained two non-blocking issues, which were fixed in 3.1.42 and uploaded on May 23rd.

How was the issue solved?

As we lost trust in Nova.CodeDOM, we decided to immediately remove the library from our product. As from version 3.1.41, we will no longer ship Nova.CodeDOM with our products.

Therefore, we unfortunately had to surrender the feature that was using Nova.CodeDOM. Namely, current versions of PostSharp no longer resolve the file and line number of error messages. We will restore the feature with Roslyn as soon as the license will allow for redistribution.


At PostSharp, we are taking our customers’ productivity extremely seriously. We are aware that this issue prevented whole teams of developers from working during several hours, and that the potential impact of the issue may account for dozens of thousands of dollars of combined productivity losses.

Although the defect was caused by a third-party component, we are ultimately responsible for the overall quality of our product, and this includes selection of suppliers.

Therefore, on behalf of PostSharp Technologies, I would like to profoundly apologize for the inconveniences caused by the issue.

Gael Fraiteur

UPDATE: Edited the article to mention our build 3.1.42 fixing minor issue and licensing friction.