Всем привет.
Есть задача запускать по 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;
}
}
}
Здравствуйте, 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
Здравствуйте, Divineshadow, Вы писали:
D>А такой команды, что то вроде "Debug.Continue" я не нашёл..
Простой эксперимент в Command Window показывает, что Debug.Start в процессе отладки означает "Debug.Continue"
Здравствуйте, 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;
}
Здравствуйте, 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