2010-05-19 91 views
7

我正在構建一個VS包,並且我試圖從包中向Visual Studio發送一個命令,以便在新選項卡中打開用戶選擇的文件(就像用戶可以通過轉到文件 - >打開...)來完成。以編程方式在Visual Studio中打開文件(2010)

我記得在某個時候看到了如何做到這一點。任何人都可以刷新我的記憶嗎?

回答

7

我相信你想要的一個:

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

最後,我想他們都歸結爲相同的行爲。

+0

嗨克里斯......我不明白。我的DTE對象沒有任何這些方法。如果我嘗試創建一個新的DTE對象,它會給我一個錯誤。有什麼建議麼? – Andrei 2010-05-20 09:11:18

+0

你引用了哪些程序集(即,你的DTE類型來自哪裏)?上面提到的'DTE'對象來自EnvDTE.dll,因此請嘗試添加對此的引用。嘗試創建新的'DTE'對象時得到的錯誤是什麼?它是編譯時還是運行時錯誤? – 2010-05-20 09:14:42

+1

我參考了所有的ENVDTE80/100組件。這個錯誤是編譯時:無法創建抽象類或接口的實例'EnvDTE80.DTE2' 此外,我在一個VS包(因爲我正在構建VS包)運行此。 – Andrei 2010-05-20 15:07:01

7

我喜歡用DTE方法ExecuteCommand(「命令名」),你可以測試在VS命令窗口

命令在這種情況下ExecuteCommand(「File.OpenFile」)

您可以添加如果需要,可以在第二個可選字符串參數中使用命令參數。

+0

不知何故,我找不到這種方法。它仍然在.NET 4中可用嗎? – Andrei 2010-05-19 14:40:34

+0

我剛剛在VS2010中創建了一個插件 - 模板創建了一個私有變量: private DTE2 _applicationObject; 你可以從那裏得到ExecuteCommand ... – philhobgen 2010-05-20 10:28:46

+0

啊,是的,我明白你的意思了。 現在我正在構建一個Visual Studio包。我也可以創建一個Visual Studio加載項,但是,如何創建加載項的實例,以便在VS包中使用,但加載項仍會保留其_applicationObject。 我希望你明白我的意思,它有點像使用WinForms應用程序中的加載項對象(_applicationObject)。 – Andrei 2010-05-20 12:56:12

相關問題