zoukankan      html  css  js  c++  java
  • VS 2005 Addin开发随笔

        最近在改进NBear的EntityDesignToEntityVsPlugin,给EntityDesignToEntityVsPlugin增加右键菜单功能,在选择EntryDesign项目时,点击右键时弹出相应的菜单,通过点击菜单项触发项目编译并根据实体设计类生成相应的实体类代码,在这里给大家分享一段在VS 2005 Add-in中实现右键菜单的代码:    
       
    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
            {
                _applicationObject 
    = (DTE2)application;
                _addInInstance 
    = (AddIn)addInInst;
                CommandBars cmdBars 
    = (CommandBars)(_applicationObject.DTE.CommandBars);
                CommandBar vsBarProject 
    = cmdBars["Project"];

                CommandBarPopup menu 
    = vsBarProject.Controls.Add(MsoControlType.msoControlPopup, Missing.Value, Missing.Value, 1trueas CommandBarPopup;
                menu.Caption 
    = "DemoAddIn";
                menu.TooltipText 
    = "";

                CommandBarControl menuItem 
    = menu.Controls.Add(MsoControlType.msoControlButton, 1""1true);
                menuItem.Tag 
    = "BuildTest";
                menuItem.Caption 
    = "BuildTest";
                menuItem.TooltipText 
    = "BuildTest";
                menuItemHandler 
    = (CommandBarEvents)_applicationObject.DTE.Events.get_CommandBarEvents(menuItem);
                menuItemHandler.Click 
    += new _dispCommandBarControlEvents_ClickEventHandler(MenuItem_Click);   
                
            }

            
    private void MenuItem_Click(object commandBarControl, ref bool handled, ref bool cancelDefault)
            {
                _applicationObject.ExecuteCommand(
    "Build.BuildSelection"""); 
            }

            
    public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom)
            {
                CommandBars cmdBars 
    = (CommandBars)(_applicationObject.DTE.CommandBars);
                CommandBar vsBarProject 
    = cmdBars["Project"];
                vsBarProject.Controls[
    "DemoAddIn"].Delete(null);
            }

    上面代码实现的功能是当你在VS 2005中选择一个项目,点击右键出现一个DemoAddin的菜单,选择该菜单中的BuildTest菜单项,会调用编译命令编译当前项目。
    在开发时,遇到了这样的问题:
    开始时,把menuItemHandler定义局部变量,点击BuildTest菜单项时,有时不执行MenuItem_Click方法,有时第一次点击时执行,但再点击就不执行。
    后来把menuItemHandler定义为类的成员变量才解决问题,具体原因目前还不清楚。

    完整代码下载:https://files.cnblogs.com/dudu/DemoAddin.rar
    如果你想手动添加上面的代码,Visual Studio 2005提供了Visual Studio Add-in模板,在新建项目时选择Other Project Types>Extensibility>Visual Studio Add-in,新建一个Visual Studio Add-in项目,将上面的代码添加到Connect类中。
    编译后,将项目文件夹中的DemoAddin.AddIn及DemoAddin.dll复制到VS 2005的Addins文件夹中(默认在“我的文档\Visual Studio 2005\Addins”),然后打开VS 2005,在Tools>Add-in Manager中启用该Add-In,如果想默认启用该Add-in,可以在DemoAddin.AddIn文件中将LoadBehavior改为1。

    参考文章:
    Explorer - A Visual Studio 2005 add-in which interacts with Windows Explorer
  • 相关阅读:
    [置顶] 签名时出错: 未在路径 C:Program Files (x86)Microsoft SDKsWindowsv7.0Ainsigntool.exe 找到 SignTool.ex
    频繁绑定DataGridView的DataSource却不正常显示
    生产者消费者模型 android
    Android Studio安装插件的三种方式
    Android Studio插件安装
    数据调试~~TCP转串口、串口转TCP调试
    Socket看法
    android颜色color.xml设置
    博客导航——一站式搜索
    dx.jar文件问题,有没有同学知道怎么解决呀,这一步没法解决,后面就没办法跟着做了
  • 原文地址:https://www.cnblogs.com/dudu/p/642229.html
Copyright © 2011-2022 走看看