发布时间:2026/7/14 23:38:02
【译】利用 GitHub Actions 实现 Visual Studio 扩展构建自动化 如果您正在开发和维护 Visual Studio 扩展程序大概率都会搭建一套构建与发布工作流 —— 无论是手动操作、脚本化的还是长期逐步拼凑而成的流程。本文面向扩展插件开发者如果您希望借助 GitHub Actions 实现 VSIX 文件的构建、版本管理与发布且流程简单、可重复执行本篇内容将为您提供相关方案。我将演示如何在我自己的各类扩展程序中实现这一操作。我长期都在使用这套方法久而久之我把重复度最高的代码片段整理成了少量可复用的小型 action这样就不用在每个代码仓库里重复编写相同逻辑了。分别为- vsix-version-stamp —— 同步统一版本号- publish-vsixgallery —— 发布持续集成构建版本用于测试- publish-marketplace —— 发布至 Visual Studio 应用市场您可以单独使用它们也可以搭配使用但我通常会把三者全部用上。如果您想查看该内容在真实代码仓库中的配置实现可以参考启 Start Screen 项目。一套真实可行的工作流程下面是一套简易配置方案和我目前所有扩展程序在用的配置大体一致name: Build on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest env: Configuration: Release VsixManifestPath: src\source.extension.vsixmanifest VsixSourcePath: src\source.extension.cs steps: - uses: actions/checkoutv6 - name: Setup MSBuild uses: microsoft/setup-msbuildv3 - name: Restore run: msbuild /t:Restore - name: Version stamp uses: madskristensen/vsix-version-stampv2 with: manifest-file: ${{ env.VsixManifestPath }} vsix-token-source-file: ${{ env.VsixSourcePath }} - name: Build run: msbuild /p:Configuration$(Configuration) - name: Publish to VSIX Gallery uses: madskristensen/publish-vsixgalleryv1 with: vsix-file: **/*.vsix - name: Publish to Marketplace uses: madskristensen/publish-marketplacev2 with: extension-file: **/*.vsix publish-manifest-file: vs-publish.json personal-access-code: ${{ secrets.VS_MARKETPLACE_TOKEN }}这本质上就是完整流程版本管理、构建、打包与发布。您可以在此处调整发布触发时机例如仅在发布时执行但核心配置基本保持不变。保持版本同步版本控制是很容易出错的一类工作。vsix-version-stamp action 会在构建过程中自动更新版本号无需人工手动处理。它搭配 VSIX Synchronizer extension 插件使用效果尤为出色该插件可基于您的 .vsixmanifest 文件生成对应的 .cs 文件。由此可得- 唯一可信数据源- 代码内置对应版本- 发布前禁止手动修改这完全是非必需的但一旦您开始使用它就很容易离不开。发布至 Visual Studio Marketplace一旦您制作好 VSIX 文件将其发布到应用市场的操作就十分简单。您只需要一个秘诀- VS_MARKETPLACE_TOKEN- name: Publish to Marketplace uses: madskristensen/publish-marketplacev2 with: extension-file: **/*.vsix publish-manifest-file: vs-publish.json personal-access-code: ${{ secrets.VS_MARKETPLACE_TOKEN }}就这样。VSIX 文件包含扩展程序元数据发布清单则补充剩余相关信息。发布至 VSIX Gallery 用于持续集成构建与测试publish-vsixgallery action 有着不同的用途。它用于快速分发安装包。我主要会在将修复方案提交至应用商店前让他人先行测试该修复、验证相关改动时使用它。- name: Publish to VSIX Gallery uses: madskristensen/publish-vsixgalleryv1 with: vsix-file: **/*.vsix这正是 VSIX Gallery 的优势所在 —— 分发流程高效、占用资源少无需完整版本发布带来的额外开销。也可使用您自己的 Gallery。VSIX Gallery 为开源项目因此如有需要您可以搭建专属的独立部署实例。GitHub Action 支持可配置的 gallery-url因此它不会绑定至某个特定的托管 Gallery中。- name: Publish to VSIX Gallery uses: madskristensen/publish-vsixgalleryv1 with: vsix-file: **/*.vsix gallery-url: https://your-gallery.example.com这使得无论您是面向公共 Gallery 发布内容还是使用自建托管服务都能采用同一套工作流程。混搭您无需全部使用这三项操作。一些常见配置方案Minimal- Build Marketplace publishCI-focused- Build VSIX Gallery publishFull pipeline- Version stamping build gallery Marketplace选用适配您工作流程的方案即可。该如何选择发布渠道- VSIX Gallery 用于测试、分发构建包以及快速验证- Visual Studio Marketplace用于正式版本发布多数扩展建议同时使用两种渠道- 持续集成构建包上传至 VSIX Gallery- 稳定版本发布至 Visual Studio Marketplace小结这是我在所有扩展程序中统一使用的配置方案。这套方案能让流程稳定可控便于共享构建文件还能省去发布流程里绝大多数重复操作。您无需全盘照搬。可以先选用适配自身工作流的部分再在此基础上逐步完善。原文链接https://devblogs.microsoft.com/visualstudio/automating-your-visual-studio-extension-builds-with-github-actions/

相关新闻

2026/7/14 23:33:01

03 LangChain入门

1、安装相关依赖 (1)安装langchain uv add langchain (2)安装对应模型的依赖。langchain支持Deepseek、Ollama、OpenAI等模型。。but 不支持阿里的qwen😭 # LangChain支持各种不同的模型,而且提供了对应…

2026/7/14 23:33:01

从概念到实现:E-R图在数据库设计全流程中的实战应用

1. E-R图:数据库设计的可视化语言 第一次接触E-R图时,我盯着那些矩形、菱形和连线看了半天——这玩意儿真的能帮我设计数据库?后来才发现,它就像建筑师的蓝图,把抽象的数据关系变成了直观的图形。E-R图(Ent…

2026/7/14 23:33:01

TSSE-driver高级配置:自定义安全策略与规则设置

TSSE-driver高级配置:自定义安全策略与规则设置 【免费下载链接】TSSE-driver provide Montage Trust & Security System Extension driver for openEuler LTS version. 项目地址: https://gitcode.com/openeuler/TSSE-driver 前往项目官网免费下载&…

2026/7/15 2:23:39

密码学--有限域GF(2^8)多项式模乘:从AES的MixColumns到硬件优化

1. 有限域GF(2^8)基础概念有限域GF(2^8)是现代密码学中最重要的数学结构之一。简单来说,它是由256个元素构成的特殊集合,每个元素可以表示为一个8位二进制数。这个域的特殊之处在于它的加法和乘法运算规则与我们熟悉的实数运算完全不同。在GF(2^8)中&…

2026/7/15 2:23:39

C++26模块实战:MSVC新特性解析与大型项目迁移指南

1. 项目概述&#xff1a;为什么C26模块值得你投入精力如果你还在用#include <vector>写C&#xff0c;那你可能已经落后了半个时代。从C20开始&#xff0c;模块&#xff08;Modules&#xff09;作为语言核心特性被引入&#xff0c;而到了C26&#xff0c;它在MSVC中的实现已…

2026/7/15 2:23:39

面向低碳与时效的生鲜冷链配送路径优化:改进蚁群算法实践

1. 生鲜冷链配送的双重挑战生鲜电商的爆发式增长让冷链物流成为关键基础设施。我去年参与过一个中型生鲜企业的配送系统改造项目&#xff0c;发现他们每天要处理300订单&#xff0c;配送半径超过50公里。最头疼的是&#xff1a;客户要求上午10点前送达的订单占比35%&#xff0c…

2026/7/15 2:18:39

SpringBoot:Camunda 流程引擎核心API与业务集成实战

1. Camunda流程引擎与SpringBoot集成基础第一次接触Camunda时&#xff0c;我被它强大的可视化流程设计能力所吸引。作为一个在Java生态中深耕多年的开发者&#xff0c;我发现SpringBoot与Camunda的结合简直是天作之合。先说说为什么选择这个组合&#xff1a;Camunda提供了完整的…

2026/7/14 12:47:32

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由&#xff1a;ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/14 19:23:19

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统&#xff1a;3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展&#xff0c;充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本&#xff0c;对充电机与电动汽车之间的通信提出了更严格…

2026/7/14 18:30:06

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动&#xff1a;从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗&#xff1f;&#x1f…

2026/7/15 0:08:29

【LINUX】驱动

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

2026/7/15 0:08:29

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

&#x1f50d; 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据&#xff0c;覆盖全国各省市区县&#xff0c;到村级别精细&#xff0c;为2026年最新实时采集成果&#xff0c;非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本&#xff0c;单体建筑边界精…

2026/7/15 0:08:29

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

&#x1f50d; 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据&#xff0c;覆盖全国全域&#xff0c;包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层&#xff0c;字段分类清晰、要素齐全&#xff0c;支持2013-2026逐年完整…

2026/7/14 12:47:31

3个高效策略:快速掌握Axure中文界面配置

3个高效策略&#xff1a;快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…