Расширение для Visual Studio 2013 : вызов форматирования кода

Рейтинг: 1Ответов: 1Опубликовано: 28.04.2015

Скажите пожалуйста как вызвать программно (из расширения к VS) форматирование (упорядочивание) кода, которое вызывается нажатием Ctrl+K+F ?

Ответы

▲ 2Принят

Короткий вариант - вызов по имени:

_applicationObject.ExecuteCommand("Edit.FormatSelection"); // или "Edit.FormatDocument"

длинный - по ID:

var vsStd2KCmdGuid = VSConstants.CMDSETID.StandardCommandSet2K_string;
object customin = null, customout = null;

_applicationObject.Commands.Raise(vsStd2KCmdGuid, 
            (int)Microsoft.VisualStudio.VSConstants.VSStd2KCmdID.FORMATDOCUMENT, 
             ref customin, ref customout);

_applicationObject - это инстансDTE2. Для констант нужен референс на Microsoft.VisualStudio.Shell.12.0.

Список ID для стандартных команд в MSDN

Вариант для VS Package, без использования DTE2:

private void MenuItemCallback(object sender, EventArgs e)
{
    IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));

    var vsStd2KCmdGuid = VSConstants.CMDSETID.StandardCommandSet2K_guid;
    uint customin = 0;
    object customout = null;
    uiShell.PostExecCommand(ref vsStd2KCmdGuid, 
        (int)Microsoft.VisualStudio.VSConstants.VSStd2KCmdID.FORMATDOCUMENT, 
        customin, ref customout);
}