簡體   English   中英

VSPackage:沒有打開“真實”解決方案時如何獲取所選文件

[英]VSPackage: How to get selected file when there is no “real” solution opened

我正在用C#開發VSPackage ,我想知道當只有一個文件(或在Visual Studio中打開多個文件)時如何獲取當前文件。

有層次結構(已打開實際解決方案)時,所有方法都可以正常工作。 但是,當我在Visual Studio中打開一個文件時,無法獲得當前的選擇。 我的意思是打開Visual Studio(沒有解決方案),然后select File > Open > File

我需要獲取以下之一:itemid,documentCookie,mkDocumentName或其他任何東西。

我嘗試了以下方法:

  • IVsMonitorSelection.GetCurrentSelection() ->它始終檢索解決方案項ID,而不包含層次結構(Intpr.Zero)
  • IVsSelectionEvents >我嘗試監聽選擇事件,新的itemId始終是解決方案itemid
  • RunningDocumentTable >好了,我RunningDocumentTable找到解決方案了,因為我可以枚舉打開的文件,但是我不確定如何確定哪個是當前文件。

這聽起來像DTE可以為您解決的問題。 您是否檢查過DTE2.ActiveDocument(通過查詢SDTE檢索到)?

var dte = (DTE2)GetService(typeof(SDTE));
var doc = dte.ActiveDocument;
// Check doc.Name, doc.Path, doc.FullName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM