簡體   English   中英

Visual Studio擴展:從裝飾品獲取包

[英]Visual Studio Extension: Get Package from adornment

我正在開發一個Visual Studio擴展,它由以下組成:

  1. 菜單和一系列命令
  2. 工具窗口
  3. 一個或多個textview裝飾
  4. AysncPackage的自定義實現

現在,雖然“工具”窗口和命令或者通過我的擴展程序的AsyncPackage進行連接或使用了句柄,但我不知道是如何從一個或多個我的同一個AsyncPackage中獲得句柄的文字裝飾。

例如,我的“工具窗口”擴展了ToolWindowPane,它通過Package的ProvideToolWindow屬性與Package掛鈎。 我的命令是在Package本身內部構造的,因此將句柄傳遞給AsyncPackage非常簡單。

我無法解決的是如何在我的任何TextAdornments中獲得對此AsyncPackage的引用。

有什么幫助嗎?

這是一個棘手的問題! 您必須獲取IVsShell才能基於與該Package關聯的GUID檢索一個Package,然后將其轉換為您的接口(或IPackage的基本接口)

 private IMyPackageInterface _myPackage;

 //let's get our hands on that package
var vsShell = (IVsShell) ServiceProvider.GlobalProvider.GetService(typeof(IVsShell));
if (vsShell == null)
{
    throw new NullReferenceException();
}

if (vsShell.IsPackageLoaded(PackageGuid, out var myPossiblePackage) 
    == Microsoft.VisualStudio.VSConstants.S_OK) { 
_myPackage = (IMyPackageInterface)myPossiblePackage;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM