在我平时的工作中会经常用到svn blame这个命令,但是vscode现有的svn扩展普遍都不能自定义右键菜单。

所以我产生一个想法:自己动手为vscode开发一款svn的扩展来定制右键菜单,本文记录这个svn扩展的开发记录,此扩展开发约耗时周末中的一天。

最终成果:在vscode扩展中搜索:svnHelper就可以找到我编写的svn扩展,商店下载地址:https://marketplace.visualstudio.com/items?itemName=qingqingzhao.svnhelper

vscode的svn扩展源代码

重点:这几个库拉下来之后,我尝试直接通过vsce package指令生成vsix,全部都失败了,编译代码时有不同的出错,只能去看vscode的开发文档。

这里我列一下我找到的几个开源的vscode的tortoise svn 扩展,每个仓库的代码我大概扫了一下:

如果想自己往右键菜单中添加选项,这个扩展的源代码比较简单易懂:https://github.com/florentulve/vstortoise

这个可以提交整个workspace:https://github.com/fantacytyx/vscode-tortoise-svn

这个提供很多的命令,https://github.com/cdsama/tortoise-svn-for-vscode

其它解决办法

在时间急迫的情况下,我找到了这个神器,在vscode中可以打开系统右键菜单,这样也可以满足我的需求,只是它需要多点一下鼠标

Windows Explorer Context Menu:https://marketplace.visualstudio.com/items?itemName=florentulve.vstortoise

github上源码报的错

上述几个源码库在编译时无一列外都会报错,我猜原因可能是我安装的nodejs和vscode版本太新有关系,因为这些库都是三四年前的。

我的操作步骤是看vscode的官方文档来操作的,步骤如下:

首先通过npm install来安装依赖,但会报:Cannot find module 'vscode'.

然后npm install vscode 之后,再次编译就有一堆的 node.d.ts编译出错

尝试过修改package.json中依赖库的版本之后,还是无法解决编译时的报错。

结论:期间还出现可以调试,但打包为vsix就会有不一样的报错,最终我放弃了折腾上述几个库,自己重新开始一个项目开发。

vscode扩展开发学习资料

新建一个vscode的扩展项目:范例-hello-world-Microsoft Visual Studio Code 中文手册 (cntofu.com)

推荐这个系列,有配图讲的很清晰:VSCode扩展开发全攻略(三)package.json详解-好记的博客 (haoji.me)

微软的文档及例子

微软的例子:https://github.com/microsoft/vscode-extension-samples

微软VSCode扩展开发官方文档:https://code.visualstudio.com/docs/extensions/overview

生成vsix及发布到市场文档:https://code.visualstudio.com/api/working-with-extensions/publishing-extension

书籍

如果时间充实的同学,可以看看微软韩老师的这本书《Visual Studio Code 权威指南》,在第15章有讲到如何开发一个vscode扩展

开发扩展的步骤

需要下载nodejs,用来编译及发布

需要安装的库:

用来生成新建项目的:npm install -g yo generator-code

用来打包vsix的:npm i vsce -g

开发扩展的步骤

  1. cd到你要把项目保存的路径,然后通过yo code新建一个项目,然后选项项目的开发语言,熟悉C#的可选TypeScript
  2. 编写扩展代码
  3. 按F5运行扩展,或者在运行调试这里,运行或新建调试项:Run Extension
  4. vsce package,把扩展打包为vsix文件
  5. vsce publish,把扩展发布到商店

发布到vscode商店

这个命令不能使用了:vsce create-publisher your-publisher-name

需要到这个网站进行操作(提交的时候可能需要挂VPN):https://aka.ms/vscode-create-publisher

发布遇到问题

这个报错需要在package.json中把publisher的名字与申请的发布名字一致

ERROR  The Personal Access Token verification has failed. Additional information:

Error: Access Denied: e2d743d1-0ffd-4e04-a41d-c894878f29ba needs the following permission(s) on the resource /qingqingzhao to perform this action: View user permissions on a resource

开发及发布的注意事项

ps:开发过程中还遇到了其它的问题,可参考我的这篇文章《知乎vscode插件修改和重新编译

发布的注意事项如果repository有填则会检查github仓库?看到有篇文章中写道,因为我是放在gitee上的,所以我没填。

建议往项目中添加这几个文件,否则每次打包时都会需要你二次确认

LICENSE.txt

CHANGELOG.md

package.json中的name建议全小写,否则会有黄色警告线,每一项的意思如果不清晰的话,把鼠标移上去就会有提示这项是干啥的。

为vscode开发一款svn右键菜单扩展的更多相关文章

  1. svn右键菜单不显

    问题1: 32位svn客户端安装到64位win7机器上,出现svn右键菜单不显. 网上有些说,,选择Mufwin7,关键下拉列表没有这项. 后来有人推荐64位系统安装64svn;32位系统安装32sv ...

  2. 几款jQuery右键菜单插件介绍

    在网页中使用自定义右键菜单,实现上皆为使用javascript禁用浏览器默认的右键菜单,然后在网页中响应鼠标右键事件,弹出自定义的菜单. 类似右键菜单的组件网上很多.一般而言,改变浏览器的默认菜单应当 ...

  3. 自己写一个chrome扩展程序 - 右键菜单扩展

    最近在学习Spring,心想dotnet如何实现类似形式呢.于是想认真学习Casetle组件,发现没有书籍!而spring的书多得很.于是只好找网上教程了.发现系统的文章不多.Terrylee好多文章 ...

  4. 几款jQuery右键菜单插件

    1.jQuery Very Simple ContextMenu Plugin 2.ContextJS Project Page:http://lab.jakiestfu.com/contextjs/ ...

  5. [原创] Delphi小工具(Windows资源管理器右键菜单扩展)

    两个小工具 1. 项目临时文件清理 2. Android Ndk 编译 c/c++ jni 源码工具. 下载后,点击Reg.bat就可以完成注册安装.不需要时点击 UnReg.Bat 就可以删除菜单. ...

  6. 【连载】Bootstrap开发漂亮的前端界面之自定义右键菜单

    连载: 1<教你用Bootstrap开发漂亮的前端界面> 2.<Bootstrap开发漂亮的前端界面之实现原理> 网页中的自定义右键菜单越来越普遍,自定义右键菜单可以增强用户体 ...

  7. [xPlugins] jQuery Contextmenu右键菜单

    [2012-04-12] Contextmenu 右键菜单 v0.1 版本发布 [功能] 在特定区域弹出右键菜单 [功能] 可以在弹出右键菜单区域内,再屏蔽某个小区域. [功能] 有两种方式添加右键菜 ...

  8. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  9. 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单、书签等相关问题

    2015-03-02 更新文章,由于需求修改,更改了flexpaper插件,故增加第9.10.11小节,下载代码时请注意. 先废话几句.最近用到文档在线浏览功能,之前用的是print2flash(一个 ...

随机推荐

  1. 最小生成树MST算法(Prim、Kruskal)

    最小生成树MST(Minimum Spanning Tree) (1)概念 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边,所谓一个 ...

  2. linux内存(三)内核与用户空间交互

    来自网址http://www.kerneltravel.net/jiaoliu/005.htm 用户程序和内核的信息交换是双向的,也就是说既可以主动从用户空间向内核空间发送信息,也可以从内核空间向用户 ...

  3. SpringMVC前后端分离交互传参详细教程

    温故而知新,本文为一时兴起写出,如有错误还请指正 本文后台基于SpringBoot2.5.6编写,前端基于Vue2 + axios和微信小程序JS版分别编写进行联调测试,用于理解前后端分离式开发的交互 ...

  4. Active MQ 整合SpringBoot

    配置文件 POM <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...

  5. 论文写作中快速更新Word里面交叉引用的编号,巧用MathType

    点击插入编号>>更新,即可快速更新交叉引用的编号,不用一个一个更新域!

  6. 知识点简单总结——Pollard-Rho算法

    知识点简单总结--Pollard-Rho算法 MillerRabin算法 用于对较大(int64)范围内的数判定质数. 原理:费马小定理,二次探测定理. 二次探测定理:若 $ p $ 为奇素数且 $ ...

  7. springboot实现热部署的几种方式

    原理:使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在 ...

  8. maven下载出现unknown文件夹

    问题场景 maven下载配置完成后,发现如上图代码包下载失败,本地maven库中出现unknown文件夹,也就是说,maven无法定位下载到上面的代码包. 解决过程 仔细观察发现,所有下载失败的代码包 ...

  9. Element-UI资源原型库

    Element-UI v2.0.0版本 Axure和Sketch库: 链接:https://pan.baidu.com/s/1LdsEh8BKQBjcWBKV5yQilQ 提取码:1xqn

  10. Java 有没有 goto?

    goto 是 Java 中的保留字,在目前版本的 Java 中没有使用.(根据 James Gosling (Java 之父)编写的<The Java Programming Language& ...