尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【译】利用 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/
RELATED

相关推荐

揪出幕后黑手:当Windows 10默认浏览器被“管家”锁死时的排查与解锁指南

揪出幕后黑手:当Windows 10默认浏览器被“管家”锁死时的排查与解锁指南

1. 问题现象:默认浏览器为何总是"叛变"?你有没有遇到过这种情况:明明已经在Windows设置里把默认浏览器改成了Edge或者Chrome,可每次点击链接还是顽固地弹出那个老旧的IE浏览器?我最近就遇到了这个烦心事&…

📅 2026/9/14 5:46:14
Ubuntu 20.04下从源码编译UE4并集成AirSim仿真环境的完整指南

Ubuntu 20.04下从源码编译UE4并集成AirSim仿真环境的完整指南

1. 项目概述:当UE4遇见Ubuntu,一场技术与耐心的较量如果你是一名从事无人机、自动驾驶或者机器人仿真的开发者,那么AirSim这个由微软开源的仿真平台,大概率是你绕不开的一个选择。它基于虚幻引擎4(UE4)构建…

📅 2026/9/14 5:44:04
前馈神经网络:从感知机到Transformer的基石

前馈神经网络:从感知机到Transformer的基石

1. 从感知机到前馈神经网络的进化之路1957年,心理学家弗兰克罗森布拉特发明了史上第一个单层感知机(SLP),这个只有输入层和输出层的简单结构,却点燃了人工智能的第一把火。但很快人们发现它连最基础的异或问题&#xf…

📅 2026/8/13 18:29:30
MORE NEWS

更多资讯

📰

从艺术收藏到公益力量:广州帅兵科技如何用定制U盘诠释品牌温度

在音乐的世界里,有些作品值得被珍藏。近日,歌手勒毛措的一套特别珍藏版U盘音乐专辑在慈善晚宴上亮相,现场多款专辑共同募集到63928元善款。这不仅是音乐魅力的体现,更是艺术设计与高品质礼品定制的一次完美结合。匠心铸就&#xf…

📰

多智能体系统失控边界:LangGraph、AutoGen与CrewAI行为指纹图谱

1. 这不是框架选型指南,而是一份“多智能体系统失控前的体检报告” 你手里的项目正在用 LangGraph 搭建客服对话路由层,AutoGen 跑着代码生成流水线,CrewAI 管着市场文案协同——三套系统并行跑了一周,突然发现:一个用…

📰

2026湖南函授站哪家好?成人学历提升机构选择指南(附推荐参考)

随着职场竞争不断加剧,越来越多湖南上班族开始关注成人学历提升。无论是用于职业晋升、职称评定、资格证考试,还是个人长期发展,成人学历已经成为很多职场人士提升竞争力的重要方式。但是,在搜索:“2026湖南函授站哪家…

📰

PrimeVue Divider 组件实战:内容分隔、垂直布局与设计令牌深度解析

PrimeVue Divider 组件实战:内容分隔、垂直布局与设计令牌深度解析 【免费下载链接】primevue Next Generation Vue UI Component Library 项目地址: https://gitcode.com/GitHub_Trending/pr/primevue 本文基于 PrimeVue 仓库中 Divider 组件的官方文档与源…

📰

2026年GEO工具横评:五款主流AI搜索优化工具实测与选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

基于MyEMS与CNN-LSTM的预测性维护预警系统实战

做工厂设备管理的朋友应该都有体会,设备“带病运行”最怕的不是坏,而是坏在深夜、坏在产线满负荷的时候。我去年负责的一批车间设备就是这种状况,最终搭建了一套基于 MyEMS 的预测性维护预警系统,用 CNN-LSTM 模型对设备运行数据进…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬