2

我正在用 C# 开发一个VSPackage,我想知道当只有一个文件(或在 Visual Studio 中打开多个文件)时如何获取当前文件。

当有层次结构(打开一个真正的解决方案)时,一切正常。但是当我在 Visual Studio 中打开单个文件时,我无法获得当前选择。我的意思是打开 Visual Studio(没有解决方案)和select File-> Open-> File

我需要获得其中之一:itemid、documentCookie、mkDocumentName 或其他。

我尝试了以下方法:

  • IVsMonitorSelection.GetCurrentSelection()-> 它总是检索没有层次结构的解决方案项目 id (Intpr.Zero)
  • IVsSelectionEvents-> 我尝试监听选择事件,新的 itemId 始终是解决方案 itemid
  • RunningDocumentTable-> 好吧,我快找到解决方案了,因为我可以枚举打开的文件,但我不确定如何确定哪个是当前文件。
4

1 回答 1

5

这听起来像是 DTE 可以为您解决的问题。您是否检查过 DTE2.ActiveDocument(通过查询 SDTE 检索)?

var dte = (DTE2)GetService(typeof(SDTE));
var doc = dte.ActiveDocument;
// Check doc.Name, doc.Path, doc.FullName
于 2010-12-31T00:19:37.247 回答