2010-05-19 5 views
7

Я создаю VS-пакет, и я пытаюсь отправить команду из пакета в Visual Studio, чтобы открыть выбранный пользователем файл на новой вкладке (так же, как пользователь сделает это, выбрав File -> Open ...).Программно открыть файл в Visual Studio (2010)

Я помню, как в какой-то момент видел, как это сделать. Может ли кто-нибудь обновить мою память?

ответ

7

Я полагаю, вы хотите один из:

  1. IVsUIShellOpenDocument.OpenStandardEditor
  2. DTE.OpenFile
  3. DTE.ItemOperations.OpenFile

В конце концов, я думаю, что все они сводятся к тому же поведение.

+0

Привет Крис ... Я не понимаю. Мой объект DTE не имеет ни одного из этих методов. И если я попытаюсь создать новый объект DTE, это даст мне ошибку. Какие-либо предложения? – Andrei

+0

Какие сборки вы ссылаетесь (т. Е. Откуда идет ваш тип DTE)? Названные выше объекты DTE исходят из EnvDTE.dll, поэтому попробуйте добавить ссылку на это. Какая ошибка возникает при попытке создать новый объект DTE? Это ошибка времени компиляции или времени выполнения? –

+1

Я ссылаюсь на все сборки ENVDTE80/100. Ошибка компиляции: невозможно создать экземпляр абстрактного класса или интерфейса 'EnvDTE80.DTE2' Кроме того, я запускаю это в пакете VS (поскольку я создаю пакет VS). – Andrei

7

Я хотел бы использовать метод DTE ExecuteCommand ("Имя_команды"), как вы можете проверить команду в VS Command Window

В этом случае ExecuteCommand ("File.OpenFile")

Вы можете добавить параметры для команды во втором необязательном параметре строки, если хотите.

+0

Как-то я не могу найти этот метод. Доступна ли она в .NET 4? – Andrei

+0

Я только что создал addin в VS2010 - шаблон создает закрытую переменную: private DTE2 _applicationObject; Вы можете получить ExecuteCommand оттуда ... – philhobgen

+0

А, да, я понимаю, что вы имеете в виду. Дело в том, что теперь я создаю пакет Visual Studio. Я также могу создать надстройку Visual Studio, но потом, как бы создать экземпляр надстройки, который я могу использовать в пакете VS, но надстройка все равно сохранит свой _applicationObject. Надеюсь, вы понимаете, что я имею в виду, это как-то вроде использования объекта надстройки (_applicationObject) из приложения WinForms. – Andrei

Смежные вопросы