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 に答える