Ich entwickle eine Visual Studio-Erweiterung, wo ich Elemente zum Kontextmenü (Rechtsklick) der Referenzen in einem Projekt hinzufügen. Dies geschieht, indem ein Group
mit dem Elternteil IDM_VS_CTXT_REFERENCE
definiert wird.Finden Sie heraus, welche Referenz in einer Visual Studio-Erweiterung geklickt wird
Ich mag die Menüelemente zeigen-ausblenden je nachdem, welche Referenz geklickt wurde, so definiere ich meinen Menüpunkt als OleMenuCommand
:
if (commandService != null)
{
var menuCommandID = new CommandID(CommandSet, CommandId);
var menuItem = new OleMenuCommand(this.MenuItemCallback, menuCommandID);
menuItem.BeforeQueryStatus += (sender, args) =>
{
var button = (OleMenuCommand)sender;
button.Visible = this.CommandVisible();
};
commandService.AddCommand(menuItem);
}
Ich habe Mühe, das CommandVisible
Verfahren. Sagen wir zum Beispiel, dass ich das Menü anzeigen möchte, wenn der Name der Referenz mit A
beginnt. Wie würde ich das tun?
Ich fühle mich wie ich in der Hölle gefangen bin, stolpernd blind über willkürliche IDs, Guids und nicht existierende/unverständliche Dokumentation.
Ich habe es geschafft, das Projekt auszugraben meine Referenz ist als IVsProject
und einige ID für die Referenz, aber Aufruf GetMkDocument
gibt nichts zurück (es funktioniert mit Dateien im Projekt, aber nicht mit Referenzen).
Wie mache ich das? Wo finde ich Dokumentation dazu?
GetMkDocument für aktuelle Dokumente nur dann gültig ist, sind die Referenzen nur eine visuelle Hilfe und sind nicht wirklich Dateien. Ich mache ein paar Tests, um zu sehen, ob ich dir helfen kann. –
Arbeit kam, aber ich nahm es so weit wie Sie haben, der Schlüssel wird die IVsHierarchy-Methoden verwenden die itemid verwenden. Ich denke du bist auf dem richtigen Weg. –