2010-12-30 3 views
2

Ich entwickle ein VSPackage in C#, und ich würde gerne wissen, wie man die aktuelle Datei erhält, wenn nur eine einzige Datei (oder mehrere Dateien werden in Visual Studio geöffnet).VSPackage: Wie bekomme ich die Datei, wenn keine "echte" Lösung geöffnet ist

Alles funktioniert gut, wenn es eine Hierarchie gibt (eine echte Lösung geöffnet). Aber wenn ich eine einzelne Datei in Visual Studio öffne, kann ich die aktuelle Auswahl nicht finden. Ich meine Open Visual Studio (ohne Lösung) und select File ->Open ->File.

Ich muss eine von diesen erhalten: itemid, documentCookie, mkDocumentName oder was auch immer.

versuchte ich folgendes:

  • IVsMonitorSelection.GetCurrentSelection() -> Es ist immer die Lösung Artikel-ID abrufen, ohne Hierarchie (Intpr.Zero)
  • IVsSelectionEvents -> ich das Auswahlereignis zu hören versucht, die neue itemId ist immer die Lösung itemid
  • RunningDocumentTable -> Nun, ich bin nah daran, die Lösung zu finden, weil ich die geöffneten Dateien aufzählen kann, aber ich bin mir nicht sicher, wie zu bestimmen, welche die aktuelle ist.

Antwort

5

Das klingt nach etwas, das die DTE für Sie lösen kann. Haben Sie DTE2.ActiveDocument überprüft (durch Abfrage nach SDTE abgerufen)?

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