我正在开发由以下组成的Visual Studio扩展:
现在,虽然“工具”窗口和命令通过扩展的AsyncPackage进行接线或具有句柄,但我不知道是如何从一个或多个AsyncPackage中获得同一个AsyncPackage的句柄我的文字装饰更多。
例如,我的“工具窗口”扩展了ToolWindowPane,它通过Package的ProvideToolWindow属性连接到Package。我的命令是在Package本身内部构造的,因此将句柄传递给AsyncPackage非常简单。
我无法解决的是如何在我的任何TextAdornments中获得对此AsyncPackage的引用。
有帮助吗?
答案 0 :(得分:0)
这是一个棘手的问题!您必须获取IVsShell才能基于与Package关联的GUID检索软件包,然后将其转换为您的界面(或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;