Не работает макрос Edit.GoToDefinition
От: rotor3  
Дата: 17.02.09 12:57
Оценка:
Visual Studio 2008
Пытаюсь из своего макроса выполнить команду Edit.GoToDefinition:
Sub MyGoToDefinition()
    DTE.ExecuteCommand("Edit.GoToDefinition")
End Sub

В C# проектах макрос работает как надо. В C++ проектах при вызове Edit.GoToDefinition выскакивает message box с сообщением "Command requires one argument", после закрытия которого выскакивает еще одно сообщение "Error HRESULT E_FAIL has been returned from a call to a COM component".

В Visual Studio 2005 макрос в C++ проектах также не работает, только в отличие от VS 2008 никаких сообщений не выдается.

При этом, если нажать F12 (F12 назначен команде Edit.GoToDefinition по умолчанию), то команда без проблем выполняется и в C#, и в C++ проектах. Т.е. сама студия дергает Edit.GoToDefinition как надо. Но если с помощью Record TemporaryMacro посмотреть, какой код генерит студия для вызова Edit.GoToDefinition, то он будет абсолютно такой же как у меня. И полученный временный макрос будет таким же нерабочим, как и мой.

Я пробовал передавать параметр:
Sub MyGoToDefinition()
    DTE.ExecuteCommand("Edit.GoToDefinition", "MyFunc")
End Sub

Тогда команда худо бедно вызывается, но при этом для локальных переменных она ничего не находит.

Как правильно вызвать Edit.GoToDefinition, чтобы она работала в C++ проектах?
Re: Не работает макрос Edit.GoToDefinition
От: rotor3  
Дата: 19.02.09 21:35
Оценка:
up
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.