码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 为vscode开发一款svn右键菜单扩展


    本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/16125285.html



    在我平时的工作中会经常用到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的名字与申请的发布名字一致

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

  • 相关阅读:
    深入详解Mybatis的架构原理与6大核心流程
    专用神经网络处理器芯片,嵌入式神经网络处理器
    基于C#+SQLServer开发的餐饮管理系统源码
    BFS专题5 跨步迷宫
    EPOLL单线程版本 基于reactor 的 httpserver文件下载 支持多个客户端同时处理
    这样也行,在lambda表达式中优雅的处理checked exception
    java类加载过程
    角色扮演?一款跨平台可移植开源游戏
    boost 库记录
    Linux的基本指令(2)
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/16125285.html
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号