Prevent (some) MEF loading crashes with a Roslyn Analyzer

Prevent (some) MEF loading crashes with a Roslyn Analyzer

If you’re working on a MEF (Managed Extensibility Framework) application, you’re probably familiar with its ups and down. On the one hand, MEF is a powerful plugin system, that’s a pleasure to work with once you know it well. On the other hand, we all encountered strange failures that originated with MEF. Such failures are a nightmare to debug and identify. There are several reasons why a MEF failure might happen.

Creating a Roslyn Analyzer that wraps code in a try/catch statement

Creating a Roslyn Analyzer that wraps code in a try/catch statement

I recently had to create a Roslyn Analyzer that envelopes code in a try/catch statement. This reasoning was to prevent loading errors in any exported MEF component . Here’s the analyzer in action: The analyzer does the following: Adds a Diagnostic that finds a MEF ImportingConstructor with content that’s not entirely wrapped in a try/catch statement. Provides a Code Fix to handle the problem. The Code Fix will: Add a try/catch statement around the entire content Add ErrorNotificationLogger.

Visual Studio 2017 Extension tutorial 8: Add UI in the indicator margin with Glyphs

Visual Studio 2017 Extension tutorial 8: Add UI in the indicator margin with Glyphs

Tutorial Table of Contents: Part 1: Introduction to VS extensibility Part 2: Add Menu Item Part 3: Add command to context menu and get selected code Part 4: Show a popup Window Part 5: Highlight code in Editor Part 6: Follow a span of code with TrackingSpan Part 7: Insert buttons between text characters with Adornments During the tutorial we are going to build a VS extensions called CodyDocs and place it on GitHub .

Visual Studio 2017 Extension tutorial 7: Insert buttons between text characters with Adornments

Visual Studio 2017 Extension tutorial 7: Insert buttons between text characters with Adornments

Tutorial Table of Contents: Part 1: Introduction to VS extensibility Part 2: Add Menu Item Part 3: Add command to context menu and get selected code Part 4: Show a popup Window Part 5: Highlight code in Editor Part 6: Follow a span of code with TrackingSpan Part 8: Add UI in the indicator margin with Glyphs During the tutorial we are going to build a VS extensions called CodyDocs and place it on GitHub .

Visual Studio 2017 Extension development tutorial part 6: Follow a span of code with TrackingSpan

Visual Studio 2017 Extension development tutorial part 6: Follow a span of code with TrackingSpan

Tutorial Table of Contents: Part 1: Introduction to VS extensibility Part 2: Add Menu Item Part 3: Add command to context menu and get selected code Part 4: Show a popup Window Part 5: Highlight code in Editor Part 7: Insert buttons between text characters with Adornments Part 8: Add UI in the indicator margin with Glyphs During the tutorial we are going to build a VS extensions called CodyDocs and place it on GitHub .

Visual Studio 2017 Extension development tutorial part 5: Highlight code in Editor

Visual Studio 2017 Extension development tutorial part 5: Highlight code in Editor

Tutorial Table of Contents: Part 1: Introduction to VS extensibility Part 2: Add Menu Item Part 3: Add command to context menu and get selected code Part 4: Show a popup Window part 6: Follow a span of code with TrackingSpan Part 7: Insert buttons between text characters with Adornments Part 8: Add UI in the indicator margin with Glyphs During the tutorial we are going to build a VS extensions called CodyDocs and place it on GitHub .

Visual Studio 2017 Extension development tutorial, Part 4: Show a popup Window

Visual Studio 2017 Extension development tutorial, Part 4: Show a popup Window

Tutorial Table of Contents: Part 1: Introduction to VS extensibility Part 2: Add Menu Item Part 3: Add command to context menu and get selected code Part 5: Highlight code in Editor part 6: Follow a span of code with TrackingSpan Part 7: Insert buttons between text characters with Adornments Part 8: Add UI in the indicator margin with Glyphs During the tutorial we are going to build a VS extensions called CodyDocs and place it on GitHub .

Visual Studio 2017 Extension development tutorial, Part 3: Add to context menu, Get selected code

Visual Studio 2017 Extension development tutorial, Part 3: Add to context menu, Get selected code

In part 2 of the tutorial we created a simple VS extension with a single Menu item. The extension will eventually be able to add code documentation in a separate file (.cs.cdocs) and view it in a nice Heads-Up display. The tutorial explains every step of the way to build such an extension. For starters, we need the ability to select a piece of code and add documentation, which is what we’ll be doing here.

Visual Studio 2017 Extension development tutorial, Part 1

Visual Studio 2017 Extension development tutorial, Part 1

Ever used Resharper , CodeMaid , WebEssentials , OzCode or CodeRush ? Those are pretty incredible tools, right? Ever thought about developing an extensions for yourself and your team? Maybe a little something that edits the very difficult configuration files your company invented? Or how about an extensions that automatically performs a localization merge? There are a lot of advantages to in-house VS extensions and some big companies even have a dedicated team to work on in-house VS extensions.