Visual Studio 拡張機能ビルドを GitHub Actions で自動化する更新ポイントと確認事項

Visual Studio 拡張機能を作っている開発者にとって、2026年6月29日に公開された「Automating your Visual Studio extension builds with GitHub Actions」の要点は、VSIX のビルド、バージョン更新、テスト配布、Marketplace 公開を GitHub Actions で標準化しやすくなったことです。Visual Studio 本体の破壊的変更というより、拡張機能のリリース作業を自動化するための実践的なワークフロー紹介と捉えるのが正確です。公式ブログでは、vsix-version-stamp、publish-vsixgallery、publish-marketplace の3つの再利用可能な GitHub Actions を組み合わせ、VSIX の作成から公開までを自動化する構成が示されています。(Microsoft for Developers)

特に確認すべきなのは、Visual Studio Marketplace へ公開するための PAT、GitHub Secrets、vs-publish.json、VSIX マニフェストのバージョン管理です。すでに Azure DevOps や手作業で公開しているチームは、すぐに移行が必須というわけではありません。ただし、Azure DevOps のグローバル PAT は 2026年12月1日に廃止予定とされているため、Marketplace 公開に広範な PAT を使っている場合は、認証方式と権限設計を早めに棚卸しする必要があります。(Microsoft for Developers)

目次

Visual Studio の「Automating your Visual Studio extension builds with GitHub Actions」とは

今回の公式情報は、Visual Studio 拡張機能の開発者向けに、GitHub Actions を使った VSIX ビルドと公開の自動化パターンを紹介するものです。

対象になるのは、主に次のようなチームです。

  • Visual Studio 拡張機能を VSIX 形式で配布している開発者
  • Visual Studio Marketplace に拡張機能を公開しているチーム
  • CI ビルドをテスターや社内ユーザーへ素早く配布したいチーム
  • 手作業でバージョン更新、ビルド、アップロードを行っている保守担当者
  • Azure DevOps から GitHub Actions への移行を検討している管理者

ポイントは、Visual Studio IDE の使い方が変わるというより、拡張機能のリリース工程を GitHub Actions 側で再現性高く管理できるようにすることです。

公式ブログで紹介されている基本的な流れは、次の4段階です。

工程目的主な確認ポイント
バージョン更新VSIX のバージョンをビルド時に更新する.vsixmanifest とコード側のバージョン不一致を防ぐ
ビルドMSBuild で VSIX を生成するwindows-latest、Release 構成、対象ソリューションを確認
VSIX Gallery へ公開CI ビルドや検証版を共有するテスター向け配布か、社内ギャラリーかを決める
Visual Studio Marketplace へ公開安定版を公式公開するPAT、GitHub Secrets、vs-publish.json を管理する

更新ポイントは3つの GitHub Actions にある

公式ブログで中心に置かれているのは、次の3つのアクションです。いずれも単独で使うことも、組み合わせて使うこともできます。(Microsoft for Developers)

アクション役割向いている用途
madskristensen/vsix-version-stamp@v2VSIX のバージョン番号をビルド時に更新手動でマニフェストを書き換えているリポジトリ
madskristensen/publish-vsixgallery@v1VSIX Gallery へ公開CI ビルド、検証版、社内テスト配布
madskristensen/publish-marketplace@v2Visual Studio Marketplace へ公開安定版、正式リリース、自動公開

vsix-version-stamp はバージョンずれを防ぐ

Visual Studio 拡張機能では、.vsixmanifest のバージョンと、コード内で参照するバージョン情報がずれることがあります。小さな拡張機能なら手作業でも対応できますが、リリース回数が増えると、同じバージョン番号で上書きしようとして失敗したり、テスターに配った VSIX がどのビルドか分からなくなったりします。

vsix-version-stamp は、source.extension.vsixmanifest と source.extension.cs などのファイルに対して、ビルド時にバージョンを反映するためのアクションです。GitHub の実行番号を使ってバージョンの一部を更新できるため、CI ごとに識別しやすい VSIX を作れます。リポジトリの README でも、manifest-file と vsix-token-source-file を指定して使う例が示されています。(GitHub)

実務では、次のようなチームに向いています。

状況導入メリット
リリース前に毎回 .vsixmanifest を手で変更している更新漏れを防げる
CI ビルドをテスターに配っているどのビルドか追跡しやすい
Marketplace 公開時にバージョン重複エラーが起きるビルド番号を使った運用に整理できる
複数の拡張機能を保守しているリポジトリごとの手順差を減らせる

publish-vsixgallery は検証版の配布に向いている

publish-vsixgallery は、Visual Studio 向け VSIX を Open VSIX Gallery に公開するためのアクションです。これは VS Code 拡張機能向けではなく、Visual Studio IDE の拡張機能向けである点に注意が必要です。リポジトリの説明では、Linux と Windows の両方のランナーで動作し、curl と bash を使うとされています。(GitHub)

このアクションの使いどころは、正式リリース前の検証版配布です。

たとえば、次のような場面で役立ちます。

活用シーン具体例
バグ修正版を先に確認してもらうMarketplace へ出す前に、報告者へ VSIX を渡して動作確認する
社内ユーザーに先行配布する業務用 Visual Studio 拡張機能を限定ユーザーに試してもらう
Pull Request の変更を試すmain にマージする前に、CI ビルドをギャラリー経由で共有する
自前ギャラリーを使うgallery-url を指定して社内ホストの VSIX Gallery に公開する

注意したいのは、VSIX Gallery は正式な Marketplace 公開の代替というより、軽量な検証用チャネルとして使うのが自然だという点です。安定版は Visual Studio Marketplace、検証版は VSIX Gallery という切り分けにすると、利用者にも説明しやすくなります。

publish-marketplace は正式リリースの自動化に使う

publish-marketplace は、Visual Studio Marketplace へ VSIX を公開するためのアクションです。リポジトリの説明では、Windows ランナーが必要で、毎回 NuGet から最新の Microsoft.VSSDK.BuildTools を取得して VsixPublisher.exe を使う構成とされています。(GitHub)

Marketplace 公開では、次の3点が重要です。

項目内容
extension-file公開する .vsix ファイル
publish-manifest-fileMarketplace 用メタデータを持つ vs-publish.json
personal-access-codeMarketplace 公開権限を持つ PAT。GitHub Secrets に保存する

Microsoft Learn でも、Visual Studio 拡張機能を Marketplace に公開するコマンドラインツールとして VsixPublisher.exe が説明されており、公開時には VSIX、publish manifest、PAT が関係します。(Microsoft Learn)

基本ワークフローの考え方

公式ブログでは、main ブランチへの push と pull request を契機に、Restore、バージョン更新、Build、VSIX Gallery 公開、Marketplace 公開を行う例が示されています。(Microsoft for Developers)

実務でそのまま使う場合は、Marketplace 公開まで毎回走らせるのではなく、次のように段階を分けるのが安全です。

タイミング実行する処理理由
Pull RequestRestore、Build、必要ならテスト破壊的変更を早く検知する
main への pushBuild、VSIX Gallery 公開検証版を共有しやすくする
タグ作成または GitHub ReleaseMarketplace 公開意図しない正式公開を防ぐ
手動実行 workflow_dispatch緊急修正版の公開管理者が明示的に公開できる

最低限の構成例は、次のような形です。

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/checkout@v6

      - name: Setup MSBuild
        uses: microsoft/setup-msbuild@v3

      - name: Restore
        run: msbuild /t:Restore

      - name: Version stamp
        uses: madskristensen/vsix-version-stamp@v2
        with:
          manifest-file: ${{ env.VsixManifestPath }}
          vsix-token-source-file: ${{ env.VsixSourcePath }}

      - name: Build
        run: msbuild /p:Configuration=${{ env.Configuration }}

ここまでで、バージョン更新とビルドの自動化ができます。検証版の配布や Marketplace 公開は、チームの運用に合わせて追加します。

影響範囲:誰が対応すべきか

今回の内容は、Visual Studio を利用する一般ユーザー全員に影響するものではありません。主な対象は、Visual Studio 拡張機能を開発・配布しているチームです。

立場影響対応の優先度
Visual Studio 拡張機能の開発者VSIX のビルドと公開を自動化できる高
OSS メンテナーリリース手順を GitHub Actions に集約しやすい高
企業内ツール開発者社内検証版と正式版の配布経路を分けやすい中〜高
Visual Studio 利用者拡張機能の更新が安定しやすくなる低
IT 管理者・セキュリティ担当PAT、Secrets、Marketplace 公開権限の管理が必要高
Azure DevOps パイプライン利用者GitHub Actions へ移すかどうかの判断材料になる中

特に管理者は、「自動化できるか」だけでなく、「誰が Marketplace に公開できるのか」「PAT がどこに保存されているのか」「退職者や異動者のトークンに依存していないか」を確認する必要があります。

設定変更で確認すべきファイルとシークレット

GitHub Actions で Visual Studio 拡張機能のビルドと公開を行う場合、最低限確認するファイルは次の通りです。

種類例確認内容
GitHub Actions ワークフロー.github/workflows/build.ymlトリガー、ランナー、公開条件
VSIX マニフェストsource.extension.vsixmanifestID、バージョン、対象 Visual Studio
バージョン同期用ファイルsource.extension.csバージョンの参照先
Marketplace 公開マニフェストvs-publish.jsonpublisher、categories、overview、private 設定
README / overviewoverview.mdMarketplace に表示する説明文
GitHub SecretsVS_MARKETPLACE_TOKEN などPAT の保存先と権限

vs-publish.json は、Marketplace 側に必要なメタデータを持つ重要なファイルです。Microsoft Learn の例でも、カテゴリ、publisher、overview、private、Q&A、リポジトリ情報などが publish manifest に含まれます。(Microsoft Learn)

Marketplace 公開用 PAT の扱いに注意する

Marketplace 公開を自動化する場合、PAT を YAML に直接書いてはいけません。必ず GitHub Secrets に保存し、ワークフローから参照します。

例として、公式ブログでは次のような参照が示されています。(Microsoft for Developers)

personal-access-code: ${{ secrets.VS_MARKETPLACE_TOKEN }}

一方で、publish-marketplace のリポジトリでは、PAT を VS_PUBLISHER_ACCESS_TOKEN という名前の Secret として保存する例も示されています。実務では、名前そのものよりも、リポジトリ内で一貫していること、権限が過剰でないこと、棚卸しできることが重要です。(GitHub)

移行期限はあるのか

今回の Visual Studio Blog の記事自体は、GitHub Actions への移行を強制する告知ではありません。そのため、「この日までに GitHub Actions 化しないと Visual Studio 拡張機能が使えなくなる」という種類の期限は示されていません。

ただし、関連して確認すべき期限があります。Azure DevOps Services のグローバル PAT は、2026年12月1日に既存トークンも含めて廃止され、以後は動作しない予定とされています。対象は Azure DevOps Services であり、Azure DevOps Server のグローバル PAT には変更がないと説明されています。(Microsoft for Developers)

このため、次のようなチームは注意が必要です。

現在の運用確認すべきこと
Azure DevOps のグローバル PAT で Marketplace 公開している2026年12月1日以降も公開処理が動くか確認する
GitHub Actions から Azure DevOps 由来の PAT を使っているSecret の発行元、スコープ、有効期限を確認する
個人アカウントの PAT に依存している組織管理の発行・更新ルールへ移す
複数 Marketplace publisher を1つの PAT で扱っているpublisher ごとの権限分離を検討する
手動公開だけで棚卸ししていない使われている PAT と所有者を一覧化する

重要なのは、GitHub Actions 化そのものに期限があるわけではない一方で、公開認証に使うトークンの寿命や仕様変更はリリース業務に直結するという点です。

管理者が確認すべきチェックリスト

Visual Studio 拡張機能の公開を GitHub Actions へ寄せる場合、管理者は次の観点で確認すると抜け漏れを減らせます。

確認項目見るべきポイント失敗しやすい例
公開権限Marketplace publisher に誰がアクセスできるか退職者の PAT で公開している
Secret 管理GitHub Secrets に保存されているかYAML に PAT を直書きしている
トリガーいつ Marketplace 公開されるかmain への push だけで正式公開される
バージョン管理ビルドごとに一意なバージョンになるか同じ VSIX バージョンを再公開して失敗する
配布経路検証版と正式版を分けているかテスト版を Marketplace に出してしまう
監査誰がワークフローを変更できるかブランチ保護なしで公開処理を変更できる
ロールバック問題時に前バージョンへ戻せるかVSIX アーティファクトを保存していない
多国籍対応Marketplace 説明文やサポート導線が適切か英語圏ユーザー向けの案内が不足する

グローバル向けに公開している拡張機能では、特に説明文、サポート先、既知の制限、対象 Visual Studio バージョンを明確にしておくことが大切です。CI/CD だけを整えても、Marketplace 上の情報が古いと、ユーザーの問い合わせや低評価につながります。

おすすめの移行パターン

既存の運用をいきなり全自動化するより、段階的に進める方が安全です。

段階実施内容判断基準
第1段階GitHub Actions で Restore と Build だけ実行PR ごとに VSIX がビルドできることを確認
第2段階vsix-version-stamp を追加バージョン重複や手動更新漏れをなくす
第3段階VSIX を artifact として保存問題発生時にビルド成果物を追跡できる
第4段階VSIX Gallery へ検証版を公開テスターに配布する運用がある場合に導入
第5段階Marketplace 公開を手動トリガーで追加管理者が明示的にリリースできる状態にする
第6段階タグや GitHub Release と連動リリースルールが固まってから自動化する

最初から Marketplace 公開まで自動化すると、誤公開のリスクが高くなります。特に企業内で使う拡張機能や、顧客向けの拡張機能では、Build と Gallery 配布で十分に検証してから Marketplace 公開を有効化するのが現実的です。

実務で使いやすい公開条件の例

Marketplace 公開は、次のいずれかの条件に絞ると運用しやすくなります。

公開条件向いているチーム
workflow_dispatch の手動実行少人数チーム、公開頻度が低い拡張機能
v* タグ作成時のみ公開セマンティックバージョニングで運用しているチーム
GitHub Release 作成時に公開リリースノートと Marketplace 公開をそろえたいチーム
commit message に [release] が含まれる場合簡易的に公開制御したい OSS プロジェクト
protected branch のみ公開承認フローを重視する企業開発

公開事故を防ぐなら、main への push だけで Marketplace 公開しない構成がおすすめです。たとえば、Build は常時実行、VSIX Gallery は main で公開、Marketplace は手動またはタグで公開、という分離が扱いやすいです。

よくある失敗と対策

VSIX Gallery と Marketplace の役割を混同する

VSIX Gallery は、検証版や一時配布に向いています。Marketplace は、正式リリースの配布先です。

両方に同じタイミングで同じ説明のまま公開すると、利用者がどちらを使えばよいか迷います。Gallery 側は「preview」「CI build」「test build」など、安定版ではないことが分かる表現にしておくと安全です。

PAT の権限を広く取りすぎる

公開用 PAT は、強い権限を持つ認証情報です。GitHub Secrets に保存していても、ワークフローを編集できるユーザーが多すぎるとリスクが残ります。

対策として、次の運用を検討します。

  • 公開用ワークフローを protected branch で管理する
  • Marketplace 公開は手動承認付きにする
  • PAT の有効期限と所有者を台帳化する
  • 個人ではなく組織として管理できる発行ルールを決める
  • 使っていない PAT を定期的に無効化する

vs-publish.json の情報が古い

Marketplace の説明、カテゴリ、リポジトリ URL、overview ファイルが古いままだと、公開は成功してもユーザー体験が悪くなります。

特にグローバル向けに公開する場合は、英語の README、サポート窓口、ライセンス、対応 Visual Studio バージョンを見直してください。日本語圏向けの拡張機能でも、Marketplace では英語ユーザーが目にする可能性があります。

バージョン番号の設計が曖昧

CI ビルド、検証版、正式版のバージョンルールが曖昧だと、問い合わせ対応や不具合調査が難しくなります。

おすすめは、正式版は 1.4.0 のように人が管理し、CI ビルドではビルド番号を含める運用です。たとえば、1.4.123 のように GitHub Actions の run number を使うと、どのワークフロー実行から生成された VSIX か追跡しやすくなります。

導入前に決めておきたい運用ルール

GitHub Actions の YAML を追加する前に、次のルールを決めておくと後戻りが少なくなります。

決めること推奨される考え方
Marketplace 公開者個人任せにせず、組織で管理する
公開タイミング手動、タグ、Release のいずれかに限定する
検証版の配布先VSIX Gallery、社内ギャラリー、artifact のどれを使うか決める
バージョン規則正式版と CI ビルドの採番ルールを分ける
Secret の更新頻度有効期限と更新担当者を明確にする
失敗時の対応再実行、公開停止、前バージョン配布の手順を用意する

自動化は、作業を減らすだけでなく、属人化を減らすための仕組みです。ビルド担当者だけが知っている手順を GitHub Actions に移し、レビュー可能な形にすることが最大の価値です。

まず取るべき次のアクション

Visual Studio 拡張機能を保守しているなら、最初にやるべきことは「現在の公開手順の棚卸し」です。

次の順番で確認すると、実務に落とし込みやすくなります。

順番アクション
1VSIX のビルドがローカルだけに依存していないか確認する
2.vsixmanifest とコード側のバージョン管理方法を確認する
3Marketplace 公開に使っている PAT の所有者、権限、有効期限を確認する
4GitHub Actions で Build のみを追加する
5必要に応じて vsix-version-stamp を追加する
6テスト配布が必要なら publish-vsixgallery を追加する
7Marketplace 公開は手動トリガーまたはタグ連動で追加する
82026年12月1日のグローバル PAT 廃止予定に備え、依存しているトークンを確認する

今回の更新は、Visual Studio 拡張機能の公開プロセスを見直す良いタイミングです。すぐに全自動化する必要はありません。まずは Build とバージョン更新を CI に移し、次に検証版配布、最後に Marketplace 公開を自動化する流れが現実的です。特に管理者は、PAT と GitHub Secrets の管理、公開条件、監査ログ、退職者アカウントへの依存を重点的に確認してください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次