Fork me on GitHub

https://github.com/3F/vsCommandEvent

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

[ ☕ Donate ]

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

Feel like a master.

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 dev environment of any users may be flexibly changed as you need in a few steps.

This is possible because vsCommandEvent may override a lot of things from Visual Studio, and it also provides flexible actions due to the fact that it was based on vsSolutionBuildEvent.

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:

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="http://schemas.microsoft.com/developer/msbuild/2003">

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

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.

#[$(
    [System.Math]::Exp('$(
        [MSBuild]::Multiply(
            $([System.Math]::Log(10)), 
            4
        ))'
    )
)]
$(n = 0)       $(desc = "Hello ")
$(n += 3.14)   $(desc += "from vsSBE !")
$(n += $(n))   $(p1 = " Platform is $(Platform)")

#SobaScript

https://github.com/3F/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  = #[$(
                        [System.TimeSpan]::FromTicks('$(
                            [MSBuild]::Subtract(
                            $(tNow), 
                            $(tBase))
                        )')
                        .TotalMinutes
                        .ToString('0'))]]
    
    #[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))')))
$(n)

Use our available components or extend everything by creating new.

Wiki

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

Welcome:

*🖼️

👉 [ . . . ]

Share: Tweet reddit mail