2.1 创建一个 菜单命令的 插件

创建一个 菜单命令 扩展

下面的指导 展示 怎么创建一个菜单命令的扩展来启动 记事本。

安装vs sdk,或者在创建 vs 扩展项目后,在加载。

创建 一个菜单命令

  1. 创建一个 VSIX 项目,命名为 FirstMenuCommand。你可以在 新建 项目 对话框 中  Visual C# 下的 Extensibility 看到 VSIX 项目模板。

  2. 当项目打开后,添加一个 自定义命令栏目 模板 命名为 FirstCommand。在解决方案中 右键 项目节点,选择 添加/新建 栏目,在新建栏目对话框中,在 Visual C# / Extensibility 选择 Custom Command, 在 窗口底部Name 框中 ,修改命令名称为 FirstCommand.cs.

  3. 生成项目 开始调试     这个 VS 实验示例 出现了。 想获取更多关于 实验示例的 信息,看  The Experimental Instance.

  4. 在 这个实验 示例 中,打开  工具  扩展 和 更新窗口, 你可以看到  FirstMenuCommand ,现阶段,只是 提示一个 信息框,说:“FirstCommandPackage Inside FirstMenuCommand.FirstCommand.MenuItemCallback()”我们会看到在接下来的章节中 实现 通过命令 启动记事本的。

Now let’s update the command handler to start Notepad.

现在让我们 更新 命令Handelr 来启动记事本

  1. 停止 调试,返回到 vs 工作界面,打开  FirstCommand.cs 文件,添加如下说明:

    C#
    using System.Diagnostics;  
  2. 找到private FirstCommand 的构造函数. 这里是指定 命令服务 和 命令处理.   修改命令操作名 为StartNotepad :

    C#
    private FirstCommand(Package package)  
    {  
        if (package == null)  
        {  
            throw new ArgumentNullException(nameof(package));  
        }  
    
        this.package = package;  
    
         OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;  
        if (commandService != null)  
        {  
            CommandID menuCommandID = new CommandID(CommandSet, CommandId);  
            // Change to StartNotepad handler.  
            MenuCommand menuItem = new MenuCommand(this.StartNotepad, menuCommandID);  
            commandService.AddCommand(menuItem);  
        }  
    }  
    
    
  3. 删除MenuItemCallback 方法,添加 StartNotepad 方法:启动记事本的方法 :

    C#
    private void StartNotepad(object sender, EventArgs e)  
    {  
        Process proc = new Process();  
        proc.StartInfo.FileName = "notepad.exe";  
        proc.Start();  
    }  
    
  4. 现在试一下,当你启动调试项目,点击 工具/ Invoke FirstCommand  ,你应该看到一个 及时本实例出来了。你可以看到用一个 进程类去运行任何可执行程序,不只是记事本,试一下 calc.exe

清理实验环境

如果你要开发多个插件,或者只是探索多个不同版本的插件代码,你的实验环境可能会停止工作。在这种情况下,你应该要运行 重置脚本Reset the Visual Studio 2015 Experimental Instance,而且它是vs sdk的一部分,这个脚本 删除你插件实验环境上的所有引用,这样你就可以重头开始。

你可以通过这2中方式得到这个脚本

  1. 在桌面上开始菜单栏上,找到 Reset the Visual Studio 2015 Experimental Instance

  2. 在命令行中运行如下代码:

    <VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=14.0 /RootSuffix=Exp && PAUSE  
    
    

现在你有了符合想法的可运行工具插件,是时候想想和你的朋友和同事分享了。这很简单,只要他们安装了 vs,你要做的 就是把 生成的.VSIX文件发送给他们。(确保在发布版的模式生成)。

你可以在 FirstMenuCommand 项目的bin目录下找到 这个插件的.vsix文件 ,具体的,如果你构建了发布配置,它应该在:

<code directory>\FirstMenuCommand\FirstMenuCommand\bin\Release\ FirstMenuCommand.vsix

安装这个插件,你的朋友需要关闭正在运行的 vs 实例。 双击 .vsix文件,vsix 安装器 会自动运行。文件就会被复制到 tthe %LocalAppData%\Microsoft\VisualStudio\14.0\Extensions 目录

当你的朋友再次打开 vs的时候,他会在  工具/ 扩展更新 上找到 FirstMenuCommand extension 。他也能 在 扩展和更新上 卸载或禁用 这个插件

这个演练 只是展示了你能用vs扩展的一少部分,下面是一个你能用vs扩展做的  短清单

  1. 你可以用菜单 和命令做更多简单的事:

    1. 添加自定义图标: Adding Icons to Menu Commands

    2. 修改菜单命令的文字: Changing the Text of a Menu Command

    3. 给菜单命令添加一个快捷键 : Binding Keyboard Shortcuts to Menu Items

  2. 添加不同类型的命令 菜单 和工具条s: Extending Menus and Commands

  3. 添加工具窗口 和扩展 生成vs工具窗口:Extending and Customizing Tool Windows

  4. 添加智能感应 代码提示 现有代码编辑器其他特性 :Extending the Editor and Language Services

  5. 给你的插件添加 选项和 属性页面和用户设置: Extending Properties and the Property Window and Extending User Settings and Options

其他类型的插件需要更多的工作,比如创建一个新类型的工程(Extending Projects),创建一个新类型的编辑器(Creating Custom Editors and Designers) 或用一个外壳实现插件:Visual Studio Isolated Shell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值