Home > Essentials > DXCore plug-ins architecture and design philosophy

DXCore plug-ins architecture and design philosophy

August 19th, 2010

A feature of CodeRush and/or CodeRush Xpress products) resides in DXCore plug-ins. A plug-in is special class that resides in an assembly that is loaded into the Visual Studio environment when DXCore starts-up.

While plug-ins implement the high level solutions you see, they don’t do all the work. Each plug-in references a namespace in the DXCore, which holds a powerful framework packed with low-level services and events.

The DXCore is loaded into Visual Studio as an Add-in for VS2005/VS2008 or as an Extension for VS2010, VS2012 and up.

Design Philosophy

The DXCore design philosophy is to keep the plug-in code simple. Complexity in a plug-in is a good indication that its code needs to be pushed as a new service and/or API down into the core. This philosophy results in the following benefits:

  1. Client code (the plug-in’s code) is simple, and easy to understand
  2. The DXCore is powerful and robust framework
  3. That power of the DXCore is completely available to third-party plug-in authors

Nearly all the code in a plug-in is there to support the high-level feature, with a noticeable absence of busywork. The code reflects the essence of the plug-in’s purpose.

Design Goals

Ease of extensibility has been one of DXCore top design goals from the beginning. So it’s no accident that the DXCore is the easiest way to extend Visual Studio IDE.

Plug-in wizards create standard plug-ins, tool windows, and options pages. These wizards lay down the framework upon which your plug-ins will grow.

  • Visual Extensibility

DXCore plug-ins are descendants of .NET controls, having the properties and a rich collection of useful events. Just drop these specialized controls onto your plug-in design surface, as needed. And because plug-ins are .NET controls, you can use Visual Studio’s Property Inspector to change properties and create event handlers.

Products: DXCore
Versions: all
VS IDEs: any
Updated: Jan/25/2013
ID: D002

Similar Posts: