CompositionContractMismatchException during PluralSight Extension course

I recently made a mistake when copying code from a Visual Studio extension course (all entirely my fault).

The course I was following was Customizing and Extending Visual Studio 2010 by Writing Code

But when I ran the demo (chapter 2), I received the following error:


When I reviewed the log I found the following exception details:

System.ComponentModel.Composition.CompositionContractMismatchException: Cannot cast the underlying exported value of type 'ToDoMarker.ToDoProvider.CreateTagger ContractName="Microsoft.VisualStudio.Text.Tagging.ITaggerProvider")' to type 'Microsoft.VisualStudio.Text.Tagging.ITaggerProvider'.

Which meant pretty much nothing to me.

After some playing around, I realized it was a result of me putting the attributes in the wrong place within the ToDoProvider.cs.

Originally I added the attributes at the method level:


This was incorrect, it needed to be at the class level:


Hopefully by posting this, anyone else getting the same problem will find it through web search rather than trial and error ;)

Labels: , ,