Scott Hanselman knows tools.

As a Principle Program Manager at Microsoft, and one of the most sought-after developer speakers on the planet, Scott has his finger planted firmly on the pulse of the .NET community. Luckily for all of us, he only uses his powers for good by entertaining and educating the community about software development across a variety of channels including podcasts, presentation and speaking tips, books, and more.

Since his first ultimate tools list in 2003, the popularity and length of Scott’s annual lists have grown considerably. This year’s list includes categories such as “The Big Ten Life and Work-Changing Utilities,” “Rocking Sweet Windows 7 Specific Stuff,” and “A (.NET) Developer's Life,” to name a few.

We’re thrilled and honored to see PostSharp included in Scott’s 2011 ultimate tools list alongside so many other great tools. We know we wouldn’t have made the list without the help of our customers, MVPs, and partners. Thank you, all.

The ultimate tools list wasn’t our first run-in with Scott in 2011. Gael sat down with him in September as part of his startup podcast series, to discuss the challenges of taking PostSharp from open source to commercial business. The two talked about aspect-oriented programming and Scott rightly pointed out that AOP is another kind of abstraction, which is the whole point of what computers are supposed to do for us, work that’s not fun like logging and transactions.

Since the beginning of 2011 we’ve focused on spreading the word about the benefits of aspect oriented programming for .NET with in-office trainings, user group and conference presentations, podcasts and screencasts, white paper and blog posts.

It seems to be working.

In September, the same month as the Hanselminutes podcast, we announced a rising trend in AOP adoption among developers in large organizations, especially those in the Fortune 500, and created case studies showing how two big companies, Siemens Audiology and Thales Information Systems, are succeeding with PostSharp.

There’s more to come in 2012, and we look forward to speaking with more of you about your experience with PostSharp. Special thanks goes out to Scott Hanselman for his seemingly tireless commitment to the community and his never-ending quest to find the ultimate tools for .NET.

Happy PostSharping!


I’m thrilled to announce that our partner IdeaBlade has just released a new version of DevForce. This application framework already provided pretty much all of the wiring you need to develop rich line-of-business applications (Silverlight and WPF backed by WCF, Entity Framework, OData). The last release now supports  domain models written for Entity Framework in Code First style… and that still respect the spirit of Code First: nice, clean code, free from infrastructure boilerplate.

Guess who is writing that boilerplate for you? Right: PostSharp. What’s nice with DevForce is that you can start coding immediately and don’t have to understand anything about AOP and PostSharp since DevForce provides all the aspects you need. Even better: you don’t need to download PostSharp and you don’t have to check-out any license: all is included in the IdeaBlade package.

See! I managed to avoid the c*c*c word.

I’d like to thank Albert and his team for their efforts and feedback during the RC stage of PostSharp 2.1. I’m sure DevForce and PostSharp will benefit from each other and will make it even easier to develop strong LOB applications.

Happy PostSharping – now even to those who never heard of PostSharp.


I’m delighted to announce the release of PostSharp 2.1 RTM, available for download on our web site and on NuGet.

The last release candidate has been available as the front-page download for more than a month now with no reported bugs. PostSharp 2.1 becomes the recommended version for everyone and is now considered more stable than the 2.0 branch.

New features

PostSharp 2.1 brings the following improvements to PostSharp 2.0:

  • Improved build-time performance: up to 5x faster. Read more.
  • Architecture validation: build-time validation of design rules. Read more.
  • Extended reflection API: programmatically navigate code references. Read more and more.
  • NuGet packaging and improved no-setup deployment experience. Read more.
  • Support for obfuscators: we now support Dotfuscator. Read more.
  • Improved Visual Studio Extension (PostSharp tab page in project properties).
  • Warnings and errors now come with file/line information. The feature is optional and must be enabled manually from Visual Studio options. We’re eager to hear feedback about this feature from customers with larger projects.
  • Support for Silverlight 5 and Windows Phone 7.1.
  • Compatibility with Code Contracts 4.
  • Improved messaging API.
  • Streamlined licensing experience and “getting started”.
  • License server (optional).
  • Streamlined “getting started” experience.
  • Warnings can be disabled locally (for a specific element of code) using the IgnoreWarning custom attribute. See online documentation for details.

Bug fixes

The RTM fixes the following issues from RC2:

  • "EnhancedByPostSharpAttribute" causes issues with the WPF compiler
  • Aspected methods with parameter of generic types are not underlined in VS code editor
  • Constant SkipPostSharp does not work
  • Different versions of PostSharp cannot be used in the same solution
  • Error due to file lock of *.vhost.exe
  • Invalid version number is written in native resources
  • MSBuild error "CodeContractsPerformCodeAnalysis target is missing" with Code Contracts Standard (without Code Analysis)
  • Type parser throws exception with arrays or generic types

Upgrading from PostSharp 2.0

This new version is fully backward compatible with PostSharp 2.0 (except one breaking bug fix), and can be installed side-by-side with PostSharp 2.0. In order to upgrade, you should just update the references to PostSharp.dll (and possibly to PostSharp.targets, if PostSharp is installed in source control). A utility contained in PostSharp HQ helps you converting projects from 2.0 to 2.1.

The upgrade is free for everyone and your 2.0 license key will work with 2.1. However, you will be asked to enter your license key.

Even if you are happy with the features of 2.0, you have to upgrade to 2.1 because your projects are going to compile damn faster! Frankly. PostSharp has now the fastest MSIL engine on the market.

Announcing PostSharp 2.0 Update 6

By the way, we’ve also updated the PostSharp 2.0 release. It contains the following fixes compared to the previous update. Needless to say, these fixes are also included in the 2.1 release.

  • Aspect instance fields should not be marked as serializable
  • Aspects may conflict with themselves
  • Attempt to use two adornment layers when symbol file is updated
  • BaseMarkerManager.RefreshTextMarkers causes AccessViolationException
  • Collapsed region names should not be underlined by the VSX
  • CSharpLanguageAdapter.VisitPropertyAccessor causes CodeProperty.get_Parent to throw InvalidOperationException
  • Exception in MulticastAtributeTask when a parameter-level MulticastAttribute is applied to a property
  • Exception in MulticastAttributeTask with inheritance on generic methods
  • Exception when an aspect is applied to a generic protected method, or a protected method of a generic type, in a third assembly.
  • Exception when an aspect is applied to a virtual method of a sealed/value type
  • Exception with multicasting inheritance on generic methods.
  • ImportMember throws an exception when a member is a property and an accessor is missing.
  • In IntroduceMember, CopyCustomAttribute with merge does not work
  • Incompatibility of the PostSharp VSX with CodeRush - collapsed regions
  • Invalid code generation when several OnMethodBoundary aspects are applied
  • Invalid code generation with a MSIL-serialized aspect containing an array argument
  • Invalid handling of generic instances in reflection wrappers
  • Invalid MSIL generation when [IntroduceMember] is applied to a member with a generic type argument
  • InvalidCastException when IAspectProvider is used when MsilAspectSerializer, and a non-instrinsic is passed to the ObjectConstruction
  • InvalidComObjectException from SolutionWatcher constructor
  • ManagedDotNet40Platform.GetGetClrIdentityManagerProc throws COMException: The handle is invalid.
  • Many features MethodRefDeclaration fail when the method refers to an implicit method of multidimensional arrays
  • Method-level MulticastAttributes with multicast inheritance are not multicast to derived types accross assemblies
  • MSBuild step "PostSharp20CopyOutputToCodeAnalysis" can fail because of file locking
  • Multicast attributes are applied to anonymous methods, but should not
  • MulticastAttribute.TargetMemberAttributes is not respected for properties and events
  • NullReferenceException in QuickInfoTracker.OnMouseMove
  • ProjectWatcher.UpdateSymbolPath throws NullReferenceException
  • Some debugging sequence points are dropped
  • ToolInvocationHelper.InvokeTool process output listener causes ArgumentOutOfRangeException on
  • UpdateCheckUtility.BeginRetrieveMessages throws ThreadStartException
  • UpdateCheckUtility.BeginRetrieveMessages throws ThreadStartException
  • VsPackage.BeginInvoke throws COMException
  • Win32Exception in PostSharp.VisualStudio.HWndDispatcher.BeginInvoke
  • Windows Phone 7 does not support tail calls generated by PostSharp
  • WriteWeavingSymbolsTask.Execute throws UnauthorizedAccessException

What’s Next?

It has been precisely one year since I started working on PostSharp 2.1. Arguably, it took way too much time to get that release out of the door. And here’s why: most of our time was invested in building the company and spreading the work about AOP. Since July, I’ve started research and planning for the next major version of PostSharp and a new product code-named Resonance, which will be to .NET software what magnetic resonance is to human body (detailed and non-invasive imaging). We’ve hired two software developers and, while PostSharp 2.1 was maturing, we started real development on the new “thing”. You’re going to be amazed, I promise.

But today, we’ve become confident that PostSharp 2.1 is ready for production, and it’s a great time for you to upgrade.

Happy PostSharping!