0

我正在尝试借助此链接创建解决方案加载项:http: //msdn.microsoft.com/en-gb/library/vstudio/ms165621(v=vs.80)

然而,我一直在输。我仔细遵循这些指示,但我认为我认为缺少一些重要的东西。所以,这是我正在做的事情的顺序,也是我打算得到的:

  1. 在插件向导的帮助下创建默认插件解决方案。因为它计划成为一个解决方案插件,所以我删除了 XML 声明文件。
  2. 在属性选项卡中选中“注册为 COM 对象”。
  3. 使用 regasm 将加载项注册为 Windows 注册表中的 com 对象。
  4. 这就是麻烦开始的地方。据我了解,我必须将链接中的以下代码写入加载项类文件的 OnConnect 事件。好的,我已经做到了。构建项目,一切都很好。

但我不明白如何将此加载项与解决方案相关联。MSDN 说:“当 Visual Studio 加载解决方案时,它首先检查解决方案 (.sln) 文件以查看它是否引用加载项。如果是,它加载它们并调用与常规 Visual Studio 加载项相同的 IDTExtensibility2 方法。”

当我尝试调试加载项时,我打开了我的外部解决方案,但在我的 OnConnect 事件中没有任何触发,直到我在加载项管理器窗口中检查了加载项。

是有意如此,还是我在此步骤中遗漏了一些重要的东西。正如我从描述中了解到的,当 IDE 打开任何解决方案文件时,必须立即触发解决方案的加载项 OnConnect。

4

1 回答 1

0

我知道这现在对您没有多大帮助,但可能对其他人有所帮助。上周我遇到了同样的问题,试图制作加载项,并且只能通过一种解决方案激活。结束在同一个 MSDN 页面上并停留在同一点:)。

要制作解决方案加载项,请按照问题中提供的链接进行操作。遵循除第 5 点之外列出的所有点 - 跳过在加载项逻辑中添加以下代码行:

EnvDTE.AddIn addin = _applicationObject.Solution.AddIns.Add("MyAddin.Connect", "MyAddinName", "My add-in description", true);

打开文本编辑器并编辑 .sln。在全局部分的 .sln 文件末尾输入这些行:

Global
(...)        
    GlobalSection(ExtensibilityAddIns) = postSolution 
        MyAddin.Connect = 1;My add-in description;MyAddinName
    EndGlobalSection
EndGlobal

这正是 _applicationObject.Solution.AddIns.Add() 在 .sln 文件中输入的内容 现在,当将此解决方案加载到 Visual Studio 中时,在加载解决方案时它也会加载此加载项。还要在此处添加一件事:以这种方式加载加载项时,传递给 OnConnection 函数的connectMode参数具有值ext_ConnectMode.ext_cm_Solution

希望能帮助到你 :)

于 2013-10-07T09:00:46.283 回答