热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

为vscode开发一款svn右键菜单扩展

在我平时的工作中会经常用到svnblame这个命令,但是vscode现有的svn扩展普遍都不能自定义右键菜单。所以我产生一个想法:自己动手为vscode开发一款svn的扩展来定制右

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

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


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


image-20220410120154351


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建议全小写,否则会有黄色警告线,每一项的意思如果不清晰的话,把鼠标移上去就会有提示这项是干啥的。



推荐阅读
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • Java内存管理与优化:自动与手动释放策略
    本文深入探讨了Java中的内存管理机制,包括自动垃圾回收和手动释放内存的方法。通过理解这些机制,开发者可以更好地优化程序性能并避免内存泄漏。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文探讨了如何在编程中正确处理包含空数组的 JSON 对象,提供了详细的代码示例和解决方案。 ... [详细]
  • MacOS上高效的SVN管理工具Cornerstone安装指南
    本文详细介绍如何在MacOS上安装和配置高效SVN管理工具Cornerstone,涵盖其主要功能和优化后的性能提升。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • andr ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
author-avatar
小嘿嘿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有