2015-06-11 46 views
0

我正在使用C#爲Visual Studio 2013編寫VSPackage。在Visual Studio中獲取活動文檔的路徑

我需要一個簡單的菜單添加到Visual Studio菜單欄。點擊它時,我希望Visual Studio中的當前打開(活動)文檔能夠上傳到特定的存儲庫中。

更多的解釋: 我要像的VisualSVN創造的東西,當你安裝它的菜單添加到工具欄VS。單擊工具欄上的菜單時,我想在Visual Studio中上傳當前打開的文件。

問題:如何在Visual Studio中獲取當前文檔路徑?

我試過了:DTE.ActiveDocument

(基本上GlobalsDTE沒有ThisAddinActiveDocuments對我來說)

回答

1

所以,我解決我的問題,通過這樣的:

DTE dtr = (DTE)GetService(typeof(DTE)); 
string filePath = dte.ActiveDocument.FullName; 

我也試過DTE2

EnvDTE80.DTE2.dte2; 
dte2 = (ENVDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0"); 
string filePath = dte2.ActivaDocument.FullName; 

備註:當使用DTE時,我得到t他在Main Visual Studio中的當前文檔(在運行代碼時,將打開另一個Visual Studio,並且在調試時可以看到您的VSPackage。)第一種方法(DTE)獲取新打開的VS中活動文檔的路徑。第二種方法(DTE2)獲取當前Visual Studio中的活動文檔 - 您正在編寫代碼的文檔。

+1

首先,ActiveDocument屬性可以爲null,因此ActiveDocument.FullName容易出現NullReferenceException –

+0

其次,GetService是正確的,但Marshal.GetActiveObject永遠不會正確 –

相關問題