2010-08-16 74 views
1
Document對象

讓我先說我是新來開發插件的Visual Studio ...Visual Studio的插件:無法從SelectedItems

當使用DTE2對象,我試圖獲取當前所選文檔的一些信息。如果我這樣做:

DTE2 VisualStudioInstance = somethingOrOther; 
Document documentInfo; 

if(VisualStudioInstance.SelectedItems.MultiSelect == false) 
{ 
    documentInfo = VisualStudioInstance.SelectedItems.Item(1).ProjectItem.Document; 
} 

Document對象總是顯示爲空。 VisualStudioInstance.SelectedItems.Item(1).Project也是null(我不一定需要,但這看起來也很奇怪。它給我所選項目的名稱,所以我至少知道它找到了一些東西

現在,如果我直接進入VisualStudioInstance.ActiveDocument,我會得到所有需要的信息。文檔實際上是否必須打開才能獲取信息?如果是這樣,我將如何獲取文檔信息對於選定的項目而不打開它?我正在尋找的主要事項是所選文件的完整路徑信息。在此先感謝。

+1

根據對此文檔示例(http://msdn.microsoft.com/en-us/library/aa300818(v=VS.71).aspx)(和我自己的測試)的評論,是的,文檔需要打開才能以這種方式訪問​​。 – Vagaus 2010-08-16 15:36:21

+0

任何想法如何獲取用戶選擇的文檔的路徑信息,例如解決方案資源管理器? – Ocelot20 2010-08-16 18:55:43

回答

2

實際上,您可以使用ProjectItem.FileNames屬性。它是一個索引屬性,它是有效的,即使該文件已關閉。

+0

但我怎麼知道哪一個被選中? – Ocelot20 2010-08-18 17:10:12

+1

嗨,我不明白。 VisualStudioInstance.SelectedItems.Item(1).ProjectItem應該爲您提供當前選定的項目項目。 從此,FileNames [1]應該爲您提供文件的完整路徑。 該文檔指出,對於某些類型(例如resx),你可能有多個文件,但在我的測試中,這沒有發生。 最好 – Vagaus 2010-08-18 19:50:07

+0

我的歉意,我以爲你是在談論一個獨立的ProjectItem對象,而不是一個鏈接到SelectedItems項目。我想我應該在發佈之前進行實際檢查。謝謝您的幫助。 – Ocelot20 2010-08-18 21:03:48

1

如果關閉,請首先打開它,然後文檔實例應該可用。

if (!projectItem.IsOpen) 
{ 
    projectItem.Open(); 
}