Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
bin
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

vsCommandEvent

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, ...)

License

Licensed under the LGPLv3

Copyright (c) 2015,2016,2019  Denis Kuzmin < entry.reg@gmail.com > 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="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:

*🖼️

👉 [ . . . ]

You can’t perform that action at this time.