Skip to content

VS 2026: Separate build and publish CI/CD pipelines #46

@csharpfritz

Description

@csharpfritz

Summary

Create independent CI/CD pipelines for the Visual Studio 2026 extension. The VS 2026 extension (C#/.NET/VSIX) must have completely separate build and publish workflows from the VS Code extension (TypeScript/.vsix).

Motivation

  • Different languages and build systems (dotnet build vs npm)
  • Different package formats (VSIX for VS Marketplace vs .vsix for VS Code Marketplace)
  • Different marketplaces and publish tooling
  • Independent release cadences — one extension shipping shouldn't block the other
  • Per user directive from Jeffrey T. Fritz

Acceptance Criteria

  • GitHub Actions workflow for building the VS 2026 extension on PR and push
    • Runs dotnet build / dotnet test for the vs2026/ project
    • Only triggers on changes to vs2026/** paths
    • Matrix: Windows (required), optionally Linux for service-layer unit tests
  • GitHub Actions workflow for publishing the VS 2026 extension
    • Triggers on tag push (e.g., vs2026-v*) or manual dispatch
    • Builds release VSIX package
    • Publishes to Visual Studio Marketplace
    • Creates GitHub release with VSIX artifact attached
  • Existing VS Code CI workflows remain untouched
  • Path filters ensure VS Code changes don't trigger VS 2026 builds and vice versa
  • Build status badges in README for both extensions

Implementation Details

Build Workflow (.github/workflows/vs2026-build.yml)

  • Trigger: push and pull_request on vs2026/** paths
  • Steps: checkout → setup-dotnet → restore → build → test → upload VSIX artifact
  • Matrix: os: [windows-latest] (VS extensions require Windows for full VSIX packaging)

Publish Workflow (.github/workflows/vs2026-publish.yml)

  • Trigger: tag vs2026-v* or workflow_dispatch
  • Steps: checkout → setup-dotnet → build Release → package VSIX → publish to VS Marketplace → create GitHub release
  • Secrets needed: VS_MARKETPLACE_PAT (separate from any VS Code marketplace token)

Path Isolation

# vs2026-build.yml
on:
  push:
    paths: ['vs2026/**']
  pull_request:
    paths: ['vs2026/**']

# Existing VS Code workflows should add path exclusions if not already filtered

Dependencies

Size: M

Routing

Assigned to squad:livingston (DevOps/CI)

Metadata

Metadata

Assignees

No one assigned

    Labels

    deferredenhancementNew feature or requestvs2026Visual Studio 2026 extension development

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions