[Visual Studio] Переопределить shortcut F5
От: Divineshadow  
Дата: 17.06.15 12:38
Оценка:
Всем привет.
Есть задача запускать по F5 команду Test Explorer->Run All
Как переопределить шорткат только для одного проекта я не нашёл.
Придумал написать add-in — задать ему shortcut F5, и уже внутри него смотреть:
если в солюшине стартовый проект он же тестовый, то _applicationObject.ExecuteCommand("TestExplorer.RunAllTest");
else
_applicationObject.ExecuteCommand("Debug.Start");

В принципе это работало бы, если бы не одно НО — в процессе отладки F5 выполняет функцию Continue.
А такой команды, что то вроде "Debug.Continue" я не нашёл..
В общем кто, что думает по этому поводу?

Вот псевдокод метода Exec моего add-in:
public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
        {
            handled = false;
            if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if(commandName == "MyAddin1.Connect.MyAddin1")
                {
                    handled = true;

                    if(_applicationObject.IsDebugging)
                    {
                        _applicationObject.ExecuteCommand("Debug.Continue"); //! вот этой команды и нет :(
                    }
                    else
                    {
                        SolutionBuild2 sb = (SolutionBuild2)_applicationObject.Solution.SolutionBuild;

                        if(sb[0] is TestProjectType)
                            _applicationObject.ExecuteCommand("TestExplorer.RunAllTest"); 
                        else
                            _applicationObject.ExecuteCommand("Debug.Start");

                    }
                    return;
                }
            }
        }
Re: [Visual Studio] Переопределить shortcut F5
От: Sinix  
Дата: 17.06.15 12:47
Оценка: 3 (1)
Здравствуйте, Divineshadow, Вы писали:

D>Всем привет.

D>Есть задача запускать по F5 команду Test Explorer->Run All
D>Как переопределить шорткат только для одного проекта я не нашёл.

http://geekswithblogs.net/sdorman/archive/2007/04/25/111981.aspx
https://visualstudiogallery.msdn.microsoft.com/fa71b090-7a6d-49a3-98aa-54d5e3feaa6b


UPD
>А такой команды, что то вроде "Debug.Continue" я не нашёл..
Debug.Start вроде, http://stackoverflow.com/a/19511260/318263


>Есть задача запускать по F5 команду Test Explorer->Run All


А вот это пробовали? http://stackoverflow.com/a/27150981
Отредактировано 17.06.2015 12:58 Sinix . Предыдущая версия .
Re: [Visual Studio] Переопределить shortcut F5
От: VladFein США  
Дата: 17.06.15 13:26
Оценка:
Здравствуйте, Divineshadow, Вы писали:

D>А такой команды, что то вроде "Debug.Continue" я не нашёл..


Простой эксперимент в Command Window показывает, что Debug.Start в процессе отладки означает "Debug.Continue"
Re[2]: [Visual Studio] Переопределить shortcut F5
От: Divineshadow  
Дата: 17.06.15 15:42
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Простой эксперимент в Command Window показывает, что Debug.Start в процессе отладки означает "Debug.Continue"


Да ты прав Вот рабочий вариант.
Только вот первый раз всё равно приходится add-in вручную запускать.

public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
        {
            handled = false;
            if (executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if (commandName == "MyAddin1.Connect.MyAddin1")
                {
                    handled = true;
                    
                    if (IsDebugMode())
                    {
                        _applicationObject.ExecuteCommand("Debug.Start");
                        return;
                    }

                    if (!IsExeProject())
                    {
                        _applicationObject.ExecuteCommand("TestExplorer.DebugAllTests");
                        return;
                    }

                    _applicationObject.ExecuteCommand("Debug.Start");
                    return;
                }
            }
        }

bool IsExeProject()
    {
        Array projects = (Array)_applicationObject.ActiveSolutionProjects;

        Project prj = projects.GetValue(0) as Project;

        OutputGroups groups = prj.ConfigurationManager.ActiveConfiguration.OutputGroups;

        foreach (OutputGroup grp in groups)
        {

            if (grp.DisplayName == "Primary output")
            {
                Array filenames = grp.FileNames as Array;

                foreach (string filename in filenames)
                {
                    if (filename.ToLower().EndsWith(".exe"))
                        return true;
                }
            }

        }

        return false;
    }

bool IsDebugMode()
    {
        return _applicationObject.Debugger.CurrentMode == dbgDebugMode.dbgBreakMode;
    }
Re[2]: [Visual Studio] Переопределить shortcut F5
От: Divineshadow  
Дата: 17.06.15 15:46
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>http://geekswithblogs.net/sdorman/archive/2007/04/25/111981.aspx

S>https://visualstudiogallery.msdn.microsoft.com/fa71b090-7a6d-49a3-98aa-54d5e3feaa6b
Мне кажется слишком громоздкое решение.. Да и потом — всё равно не будет работать. Так как в режиме отладки, нажатие по f5 будет запускать runtest.

S>UPD

>>А такой команды, что то вроде "Debug.Continue" я не нашёл..
S>Debug.Start вроде, http://stackoverflow.com/a/19511260/318263

>>Есть задача запускать по F5 команду Test Explorer->Run All


S>А вот это пробовали? http://stackoverflow.com/a/27150981


А вообще большое спасибо за советы Сделал таки рабочий вариант здесь
Автор: Divineshadow
Дата: 17.06.15
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.