【问题标题】:VSPackage: How to get selected file when there is no "real" solution openedVSPackage:没有打开“真实”解决方案时如何获取选定的文件
【发布时间】:2010-12-30 22:45:16
【问题描述】:

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

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

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

我尝试了以下方法:

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

【问题讨论】:

    标签: c# visual-studio vs-extensibility vspackage


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 2011-04-06
      相关资源
      最近更新 更多