Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Extending Visual Studio on the fly via E-MSBuild, SobaScript, C#, ... An powerful manager of the commands and data.

Feel like a master.

Build status VSIX LGPLv3 GetNuTool SobaScript E-MSBuild

Build history

Download (Binaries, Snapshots, Nightly builds, Libraries, ...)


Licensed under the LGPLv3

Copyright (c) 2015,2016,2019  Denis Kuzmin < > GitHub/3F

[ Donate ]

Why vsCommandEvent ?

vsCommandEvent was based on vsSolutionBuildEvent engine and still continues mission to provide flexible actions for your environment!

Means advanced handler of the most events but unlike the first it specialized for advanced work with the Visual Studio commands and its data as manager of this on the fly.

Overriding commands

The entire environment of any users may be flexibly changed as you want for different cases...

This is possible because the vsCommandEvent may override a lot of commands from Visual Studio and due to the fact that it is based on vsSolutionBuildEvent engine it also provides a lot of flexible actions as you need.

You can even override the 'Exit' (including [X] and Alt + F4 hotkey) for Visual Studio IDE on the fly 🔧.

A new look at old things

In comparison with vsSolutionBuildEvent, Why not look at some similar solutions from there.

It cannot be same as for vsSolutionBuildEvent because it works on another technologies. But let's try to look closer. Can we achieve the same result via vsCommandEvent manager?

Solution-wide Build Events

vsCommandEvent initially may work with commands from VS. Thus, you can catch commands when starting the any Build operations still for the entire solution or individually for each project separately.

This is it ~

Description Guid Id in out
Started - Build Solution {5EFC7975-14BC-11CF-9B2B-00AA00573819} 882
Started - Rebuild Solution {5EFC7975-14BC-11CF-9B2B-00AA00573819} 883
Started - Clean Solution {5EFC7975-14BC-11CF-9B2B-00AA00573819} 885

Automatic Version Numbering

Still available versioning as you prefer. Moreover, with an vsCommandEvent you can handle versioning for most operations of Visual Studio. Just try as you need.

Stop build on first error

Disturbs [Warnings] and [Errors] ?! no problem, manage it:

Advanced Actions

vsCommandEvent provides most the action types from vsSolutionBuildEvent engine:

  • Files Mode, Operation Mode, Interpreter Mode, Script Mode, Targets Mode, C# Mode, and more such as EnvCommand Mode etc.

Supports advanced MSBuild & SBE-Scripts engine for powerful usage. And lot of other features for the convenience of your work with the build, tests, versioning, IO operations, and so on. See the documentation.

A few modes for you:

Targets Mode

You can even work with MSBuild Targets / Tasks and other 'as is' (classic compatible mode).

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="">

    <Target Name="Init">
        <!-- your awesome code ... -->

C# Mode

You can also choose this as an preferred action type.

namespace vsCommandEvent
    public class CSharpMode
        public static int Init(ICommand cmd, ISolutionEvent evt)
            // your awesome code ...

Advanced MSBuild

Through E-MSBuild engine.

$(n = 0)       $(desc = "Hello ")
$(n += 3.14)   $(desc += "from vsSBE !")
$(n += $(n))   $(p1 = " Platform is $(Platform)")


#SobaScript -- Extensible Modular Scripting Programming Language.

    Basic example
#[var v = 1.2.3]
#[var log = $(TMP)/v.txt]

#[($(Configuration) ~= Deb || true)
    #[var tBase     = $([System.DateTime]::Parse('2015/10/01').ToBinary())]
    #[var tNow      = $([System.DateTime]::UtcNow.Ticks)]
    #[var revBuild  = #[$(
    #[var v = $(v).$([MSBuild]::Modulo($(revBuild), $([System.Math]::Pow(2, 14))))]

#[var v = $([System.String]::Format("v{0}\r\n\t", $(v)))]
#[File write("#[var log]"):> Example #[var v] Generated by vsSolutionBuildEvent]
#[IO scall("notepad", "#[var log]")]

$(n = $([System.Math]::Exp('$([MSBuild]::Multiply($([System.Math]::Log(2)), 16))')))

Use our available components or extend everything by creating new.


Wiki - Contains help for work with plugin, basic examples, syntax, information for develop, and other...

Feel free to improve any our pages. Click [Edit] button or Start new page here.

Questions / Bugs / Suggestions / Source Code



👉 [ . . . ]