Aspire VS Code 扩展实战指南:用 F5 一键启动整个分布式应用开发闭环 Aspire VS Code 扩展实战指南用 F5 一键启动整个分布式应用开发闭环【免费下载链接】aspireAspire is the tool for code-first, extensible, observable dev and deploy.项目地址: https://gitcode.com/GitHub_Trending/as/aspireAspire 是微软开源的代码优先、可扩展、可观测的应用开发与部署工具而官方 VS Code 扩展aspire-vscode把它的 AppHost 编排、资源管理、调试器和仪表盘全部收拢进一个开发循环你在代码里定义整个分布式应用然后在 VS Code 中按下 F5服务、容器、数据库、前端以及它们之间的连接关系就会按正确顺序被拉起。读完本文你将掌握从创建 AppHost、一键运行与跨栈调试到借助 Aspire Dashboard 观察健康与追踪、再到部署与发布产物的完整工作流并理解扩展背后的源码级实现机制。扩展定位你的整个分布式应用一个 F5 之遥extension/README.md的第一句话就点明了扩展的设计目标Your whole distributed app, one F5 away。Aspire 扩展将 AppHost、资源、调试器和仪表盘整合到同一个开发循环中其官方身份由 extension/package.json 声明扩展名为aspire-vscode发布者为microsoft-aspire类别涵盖 Programming Languages、Debuggers 与 Other关键词包括aspire、dotnet、typescript、distributed、orchestrator、apphost。这套体验的基石是AppHost应用宿主它是用代码定义整个应用的入口服务、容器、数据库、前端以及它们之间的连接关系都以代码形式描述。扩展围绕 AppHost 提供了完整的发现discovery、启动launch、观测observability与发布deploy/publish能力。快速开始三步跑起第一个分布式应用在 Aspire 扩展中从零到运行只需三步打开或创建项目打开一个 Aspire 项目或通过 Aspire 视图新建一个。扩展通过workspaceContains激活事件自动识别工作区中的 Aspire 项目覆盖**/*.csproj、**/aspire.config.json、**/.aspire/**以及apphost.cs、apphost.ts、apphost.mts、apphost.cts、apphost.js、apphost.mjs、apphost.cjs、apphost.rs、AppHost.java、apphost.java等文件见 extension/package.json 的activationEvents无论 AppHost 用 C#、TypeScript/JavaScript、Rust 还是 Java 编写都能被感知。选择 AppHost 并按 F5Aspire 会按依赖顺序启动每个资源并连接支持的调试器使断点可以横跨整个应用栈。用 Aspire 视图和 Dashboard 观察查看资源、端点、日志、追踪与指标。内置的 Get Started 向导walkthrough把上述流程拆成可逐步执行的步骤包括 welcome.md欢迎页、installCli.md安装 CLI、createProject.md创建项目、runApp.md运行应用与 dashboard.md查看仪表盘在扩展活动栏的 Aspire 面板即可访问。更好的内环开发inner dev loop扩展把编辑-运行-调试-观察压缩在一个循环内核心能力包括运行你的应用从 Aspire 视图启动、调试、停止一个 Aspire 应用也可以对单个资源执行启动、停止、重启操作。对应命令包括aspire-vscode.runAppHost、aspire-vscode.debugAppHost、aspire-vscode.stopAppHost以及资源级的aspire-vscode.startResource、aspire-vscode.stopResource、aspire-vscode.restartResource。跨栈调试Aspire 调试会话支持 C#、JavaScript、Python、Go、Java 与 Rust 应用资源在对应调试器可用时。Java 与 Rust 的调试需要 Aspire 13.6 或更高版本。实时健康与分析打开 Aspire Dashboard 查看资源健康状态、端点、控制台日志、结构化日志、分布式追踪与指标。不离开 VS Code 监控在 AppHost 源码中直接看到资源健康状态摘要和快捷操作。走向生产使用 Aspire 视图完成部署、发布产物和运行流水线步骤。跨栈调试多种语言的统一入口扩展的调试能力并不是为单一语言设计的debugger/languages/ 目录按语言组织了调试适配dotnetC#、node、bun、deno、javascriptRuntime、python、go、java、rust此外还包括browser浏览器调试、azureFunctionsAzure Functions与maui.NET MAUI等特殊场景。在源码层面AspireDebugConfigurationProvider.ts 实现了 VS Code 的DebugConfigurationProvider它负责在解析 launch.json 配置时做 AppHost 发现、CLI 可用性校验checkCliAvailableOrRedirect、动态选择要启动的 AppHost并通过启动预留launch reservation机制防止同一个 AppHost 被重复拉起。当program指向工作区根目录时它会自动发现目录下的 AppHost 候选并让你快速选择目标。一个 F5 背后的实现从激活到调试会话从源码结构看扩展的激活流程extension.ts清晰地串起了整个链路CLI 环境同步CliPathEnvironmentSynchronizer将解析到的 Aspire CLI 路径写入 VS Code 的终端/任务环境变量AspireCliPath确保 MSBuild 的ResolveAspireCliBundle任务和集成终端中的工具与扩展使用同一套 CLI 安装。RPC 服务器AspireRpcServer建立 Aspire CLI 与扩展通信的 RPC 通道AspireDcpServer对接编排器Developer Control PlaneDCP。树视图与数据仓库AspireAppHostTreeProvider配合AppHostDataRepository驱动 Aspire 面板中的 AppHost/资源树面板可见时才开始工作区描述监听与全局轮询。编辑器内联体验AspireCodeLensProvider在 AppHost 源码中渲染 CodeLens运行/调试/日志/资源动作AspireGutterDecorationProvider用彩色圆点表示资源运行状态AppHostFilePresenceWatcher让 AppHost 文件一打开即可工作。调试器接线AspireDebugAdapterDescriptorFactory与TestRunSessionManager分别处理普通调试会话与测试会话的创建。Agent 与 MCP 集成注册语言模型工具aspire_apphost_start/aspire_apphost_stop对应 appHostLifecycleTools.ts以及 Aspire MCP 服务器AspireMcpServerDefinitionProvider.ts让 AI 助手与编辑器共享同一套 AppHost 生命周期服务。用 launch.json 精确控制 Aspire 调试会话除了点击运行扩展也深度集成了 VS Code 的调试配置体系。在package.json的contributes.debuggers中注册了调试器类型aspire支持的 launch 配置属性如下属性类型默认值说明typestringaspire调试器类型扩展会自动补齐requeststringlaunch请求类型扩展会自动补齐namestring默认配置名配置显示名称programstring${workspaceFolder}要启动的 AppHost 路径或目录debuggersobject{}按语言细分的调试器选项如apphost、project的 launchProfile 等commandenumrun执行的命令run/deploy/publish/dolaunchProfilestring-指定 launchSettings.json 中的启动配置文件stepstring-do命令要执行的流水线步骤argsstring[][]传给 CLI 的额外参数envobject{}附加环境变量dashboardBrowserenumnone仪表盘打开方式最简配置只需要三行{ type: aspire, request: launch, name: Aspire: Launch AppHost, program: ${workspaceFolder} }program指向工作区根目录时扩展会通过AspireDebugConfigurationProvider自动发现其中的 AppHost如果发现多个可构建候选会弹出 QuickPick 让你选择要启动的目标。command从run切换到deploy、publish或do时同一份配置即可完成从本地运行到部署/发布/流水线的转换。观察整个系统Aspire DashboardAspire Dashboard 是理解应用正在做什么的唯一入口见 dashboard.mdResources资源显示哪些资源正在运行、等待或处于不健康状态。Endpoints端点直接跳转到每个服务。Console Logs控制台日志展示资源的标准输出。Structured Logs结构化日志OpenTelemetry 数据。Traces追踪追踪一次请求如何跨越服务边界。Metrics指标展示应用随时间的行为表现。扩展注册了aspire-vscode.openDashboard与aspire-vscode.openDashboardToSide两个命令可以从 Aspire 视图一键打开仪表盘。通过设置aspire.enableAspireDashboardAutoLaunch可选launch/notification/off默认off可以控制调试启动时是否自动拉起仪表盘aspire.dashboardBrowser支持openExternalBrowser、integratedBrowser、debugChrome、debugEdge、debugFirefox等打开方式aspire.closeDashboardOnDebugEnd默认true控制调试结束后是否关闭仪表盘。不离开编辑器CodeLens 与内联资源状态对于受支持的 AppHost 语言编辑器内直接呈现实时资源状态CodeLens 提供调试流水线步骤、资源状态与快捷操作侧边槽装饰gutter decorations用颜色圆点标记资源运行状态。这些能力由AspireCodeLensProvider与AspireGutterDecorationProvider提供并可通过设置开关aspire.enableCodeLens默认true是否启用 CodeLens。aspire.enableGutterDecorations默认true是否启用侧边槽状态装饰。aspire.appHostsPollingInterval默认 30000ms最小 1000msAspire 视图数据刷新间隔。走向生产部署、发布与流水线扩展不只在开发期有用还覆盖了生产路径Deploy部署aspire-vscode.deployAppHost将应用部署到目标环境。Publish发布aspire-vscode.publishAppHost发布部署产物如容器镜像。Run pipeline step / Debug pipeline stepaspire-vscode.runPipelineStepAppHost与aspire-vscode.debugPipelineStepAppHost用于执行流水线中的单个步骤并支持对其断点调试。在树视图中这些动作会根据 AppHost 的能力标签canDeploy、canPublish、canDo自动出现在上下文菜单中。对应关系可以在 extension/package.json 的menus.view/item/context中看到例如deployAppHost仅在viewItem ~ /:canDeploy/时显示。集成生态Bring your stackAspire 可以把 C#、TypeScript/JavaScript、Python、Go、Java、容器、数据库、云资源等整合到一起。扩展的价值在于通过统一的 AppHost 模型编排异构技术栈通过aspire.config.json的 JSON Schema 校验extension/schemas/aspire-config.schema.json为配置提供智能提示与校验.aspire/settings.json与.aspire/globalsettings.json也有对应 schema通过aspire-vscode.add/aspire-vscode.init/aspire-vscode.new等命令把现有项目接入 Aspire 或创建新项目通过aspire-vscode.installCli与aspire-vscode.verifyCliInstalled管理 Aspire CLI 安装确保运行时依赖就绪。常用设置项速查以下是 extension/package.jsonconfiguration中声明的核心设置设置项类型/取值默认值用途aspire.aspireCliExecutablePathstring指定 Aspire CLI 可执行文件路径支持${workspaceFolder}等变量便于对接本地构建的 CLIaspire.enableSettingsFileCreationPromptOnStartupbooleantrue工作区存在 AppHost 时是否提示创建设置文件aspire.enableAspireCliDebugLoggingbooleanfalse输出通道中显示 Aspire CLI 调试日志aspire.enableAspireDcpDebugLoggingbooleanfalse输出通道中显示 DCP 调试日志aspire.enableHotReloadNotificationbooleantrue是否启用热重载通知aspire.enableAspireDashboardAutoLaunchlaunch/notification/offoff调试启动时自动打开仪表盘的方式aspire.dashboardBrowser见上文枚举none仪表盘的打开浏览器方式aspire.closeDashboardOnDebugEndbooleantrue调试结束时关闭仪表盘aspire.enableDebugConfigEnvironmentLoggingbooleantrue是否记录调试配置的环境日志aspire.registerMcpServerInWorkspacebooleanfalse是否在工作区注册 Aspire MCP 服务器aspire.appHostsPollingIntervalnumber≥100030000面板数据轮询间隔毫秒aspire.enableCodeLensbooleantrue启用 AppHost 源码中的 CodeLensaspire.enableGutterDecorationsbooleantrue启用资源状态侧边槽装饰aspire.enableAutoRestorebooleanfalse工作区打开或aspire.config.json变更时自动执行aspire restore其中aspire.enableAutoRestore由AspirePackageRestoreProvider实现默认关闭开启后会在工作区打开及aspire.config.json变化时自动运行 restore也可以通过aspire-vscode.restore命令手动触发重试。源码级深读扩展的工程质量保障该扩展不是一次性脚本而是一个拥有完整测试体系的成熟项目单元测试extension/src/test/下有 100 个*.test.ts文件覆盖 CLI 解析cli.test.ts、AppHost 发现appHostDiscovery.test.ts、调试配置aspireDebugConfigurationProvider.test.ts、CodeLenscodeLens.test.ts、各语言调试器dotnetDebugger/pythonDebugger/goDebugger/javaDebugger/rustDebugger等等模块由vscode/test-electron运行。端到端测试extension/src/test-e2e/下通过 ExTester 在真实 VS Code 实例中运行打包后的 VSIX覆盖从零到运行zeroToRunning、调试仪表盘debugDashboard、AppHost 树appHostTree、资源动作treeActions、命令面板commandPalette、设置文件settingsFiles等场景并按分片shard并行执行以控制 CI 时长。本地化所有面向用户的字符串通过package.nls.json与src/loc/strings.ts管理并生成 14 个语言版本的 xlf 翻译文件见 extension/loc/xlf/。如果你希望参与扩展开发extension/CONTRIBUTING.md 提供了完整指引在extension/目录执行corepack yarn install恢复依赖后在 VS Code 中按 F5 启动Run Extension即可调试扩展本体仅改 TypeScript 无需构建整个 .NET 仓库用任意 PATH 上的 Aspire CLI 即可。反馈与贡献扩展的开发过程遵循开源协作流程报告问题与特性请求走标准 issue 流程标签area-vscode-extension贡献代码前请阅读 extension/CONTRIBUTING.md 并确保单测与 lint 通过。扩展的许可证见 extension/LICENSE.TXT。结语从定义 AppHost 到一键 F5再到仪表盘观测与生产发布Aspire VS Code 扩展把分布式应用的内环开发压缩到了一个可重复、可调试、可观测的循环里。结合多语言调试、编辑器内联状态、Agent/MCP 集成与完整的测试体系它既是一个易用的开发入口也是一个可以深入研读的工程范例。掌握本文介绍的启动流程、launch.json 配置与设置项你就能把整个分布式应用的开发闭环搬进 VS Code。【免费下载链接】aspireAspire is the tool for code-first, extensible, observable dev and deploy.项目地址: https://gitcode.com/GitHub_Trending/as/aspire创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考