Scheme of vsSolutionBuildEvent projects

It describes the structure of existing components, illustrates scheme of their work and also shows how it works for Visual Studio Command-Line, MSBuild tools, etc.

Basic scheme for v0.12+

Scheme of vsSolutionBuildEvent projects

Where:

vsSolutionBuildEvent

The vsSolutionBuildEvent - is the main plugin as a VSPackage. Contains main logic for work with events of Visual Studio via Microsoft.VisualStudio.Shell.Interop.

  • Implements basic model of events with IVsSolutionEvents and IVsUpdateSolutionEvents2
  • Works with priority processing (i.e. with 'Advise..' methods instead of simple subscription with Events from DTE). See MSDN for more details.
  • Distributed as .vsix for IDE Visual Studio.

API

The vsSolutionBuildEvent API - is the API level for work with main library. In general, the vsSolutionBuildEvent implements the Bridge specifications and allows access for most features for any other applications such as the CI.MSBuild, Devenv etc.

Provider

The vsSolutionBuildEvent Provider - is also as a part of API level, however this unit is intended for a quick standard work with main library. Contains loader etc.

client.vssbe.dll

The client.vssbe.dll it's optional variant for work with events from our core library. How to create and use.

Devenv

The vsSolutionBuildEvent Devenv Command-Line - is a wrapper and translator of the model of events for main library to support the command-line of Visual Studio.

Why is so strange ?

The VSPackage does not allow any access to Command-line (devenv.exe /devenv.com). This problem is also reported here

However! we can play with command-Line in Add-Ins… well, current component will resolve main problem above. Details of main idea here

You can also see our source code if you want to reproduce this trick for your any other plugin. Read the documentation in links above.

CI.MSBuild

It is also a wrapper but a little harder.. For work with basic model of events the Visual Studio need a some converting/adaptation of all available units for our main library. Therefore, we should convert this for translations to main library.

This is not Add-Ins and this requires no any additional installation for any your environments. Simply configure and use this as stated in the documentation. You can also see real sample of work on our project here

Full version with standard libraries - vsSBE.CI.MSBuild

The CI.MSBuild is also works via Provider and also requires main library. All this can be selected and configured manually, but you can also use full version with standard libraries - vsSBE.CI.MSBuild - just get and use

Scripts …

Script-engines, C# compiler, .target features - all this as part of user-script layer to work with all what you need at runtime, for example, affecting on the build processes and other.

Basic examples of this here or here, etc.

Other Applications

All this above can be used in some other your tools via API & Provider. You can, for example, use a custom model of events for additional build and/or provide additional GUI for the settings/commands/scripts and other…

Model of events

In general, the vsSolutionBuildEvent works on the event model, i.e.:

  • There is an unified event (from Visual Studio, MSBuild tools, etc.)
  • And there is any actions, that to be executed…

Model of events

Basic work is a:

References