ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

使用 Aspire 每日构建(Daily Build):CLI 安装、VS Code 扩展、项目创建与升级完整指南

使用 Aspire 每日构建(Daily Build):CLI 安装、VS Code 扩展、项目创建与升级完整指南 使用 Aspire 每日构建Daily BuildCLI 安装、VS Code 扩展、项目创建与升级完整指南【免费下载链接】aspireAspire is the tool for code-first, extensible, observable dev and deploy.项目地址: https://gitcode.com/GitHub_Trending/as/aspire本篇技术指南面向希望抢先体验 Aspire 最新开发成果的开发者完整讲解如何在本机安装每日构建daily build亦称 dev build的 Aspire CLI、搭配 VS Code 扩展使用、通过aspire new向导创建使用每日通道channel的新项目以及如何用aspire update将既有项目平滑迁移到每日构建。全文以仓库文档 docs/using-latest-daily.md 为核心骨架并结合 src/Aspire.Cli 的源码实现为你揭示通道选择、NuGet 源切换、项目更新的底层机制。前提说明如果你只想使用 Aspire 的官方正式发布版stable完全不需要阅读本文直接使用官方文档即可本文仅面向希望尝鲜每日构建的开发者。每日构建属于“不受支持unsupported”的构建仅用于体验最新特性。一、准备机器环境先满足运行前提在安装每日构建之前需要先准备好机器环境。Aspire 的 AppHost 在开发阶段依赖容器运行时来承载各类集成资源数据库、消息队列、缓存等因此机器上必须先安装受支持的容器运行时具体参见仓库文档 docs/machine-requirements.md。Docker Desktop支持 Windows、macOS、LinuxPodman同样支持 Windows、macOS、Linux 三大平台。容器运行时就绪后开发环境可以选择以下任一方式方式要求VS Code DevContainers 扩展在 Windows/Linux/macOS 上均可使用目前仅针对 Docker Desktop 做过测试加载解决方案后约占用 16GB 内存Visual Studio需 Visual Studio 2022 17.14 或更高版本安装时必须勾选ASP.NET and web development工作负载Codespaces浏览器中直接启动初始化约 5 分钟免费版 Codespaces 建议至少配置 16GB 内存需要说明上述部分链接为外部官方地址实际安装细节以各工具官方文档为准。此外若在 Alpine Linux 上构建 Aspire 仓库还需要apk add --no-cache grpc-plugins并设置PROTOBUF_PROTOC、GRPC_PROTOC_PLUGIN环境变量且 Alpine 目前仅直接支持 x64/amd64 架构且不在 CI 测试套件覆盖范围内。二、仅安装每日构建的 CLIAspire 提供了官方安装脚本通过-Quality devPowerShell 中为-Quality devbash 中简写为-q dev即可安装每日构建dev build版本的 CLI。WindowsPowerShelliex { $(irm https://aspire.dev/install.ps1) } -Quality devLinux 或 macOScurl -sSL https://aspire.dev/install.sh | bash -s -- -q dev从仓库中 eng/scripts/get-aspire-cli.ps1 的脚本注释可以看出-Quality参数支持三种取值其含义分别为release下载当前平台/架构的最新正式发布版staging下载最新的 staging 版本若无 staging 版本则回退到 release 版本dev从main分支下载最新的 dev 构建即每日构建。这与 eng/scripts/README.md 中记录的--quality/-q参数说明一致默认值为release。三、安装每日构建的 CLI VS Code 扩展Aspire 的 VS Code 扩展在运行时依赖 Aspire CLI 位于 PATH 中才能正常工作因此推荐用安装脚本一次性装好两者。WindowsPowerShelliex { $(irm https://aspire.dev/install.ps1) } -InstallExtension -Quality devLinux 或 macOScurl -sSL https://aspire.dev/install.sh | bash -s -- --install-extension -q dev提示如果要把 Aspire 扩展安装到 VS Code Insiders请在 PowerShell 中追加-UseInsiders标志或在 bash 中追加--use-insiders标志。安装完成后需要确保aspire命令所在的目录已加入PATH否则 VS Code 扩展无法找到 CLI。四、创建新项目在向导中选择 daily 通道每日构建 CLI 安装完成后即可在命令行创建一个全新的 Aspire 项目aspire new运行该命令会启动交互式向导。向导会要求输入项目名称、输出路径并允许选择模板的通道channel。以下是文档中的典型交互过程Enter the project name (aspire-projects): dailybuild0 Enter the output path (./dailybuild0): ./dailybuild0 ✔ Using Redis Cache for caching. Select a template version: 9.4.1 (nuget.org) daily stable (Type to search)从上面的输出可以看到向导会列出可用的模板版本来源既可以是 nuget.org 上的正式发布版如9.4.1也可以是daily、stable等通道。选择daily后项目将使用每日构建对应的模板与包版本。向导背后的实现细节从源码看aspire new由 src/Aspire.Cli/Commands/NewCommand.cs 实现它注册了--name/-n、--output/-o、--source/-s、--version、--channel、--language等选项。其中--channel选项的描述会根据当前 CLI 是否启用了 staging 通道而动态调整。关键行为可追溯到 src/Aspire.Cli/Commands/NewCommand.cs 附近的实现逻辑未显式传--channel时优先选择与当前运行 CLI 的身份通道stable、staging、daily、local或pr-N相匹配的通道其次回退到 Implicitnuget.org通道通道名只有在确实需要被“钉住pin”时才会持久化到项目的aspire.config.json例如local、daily、staging、pr-Nstable通道被刻意排除选择每日构建通道后CLI 会在项目目录生成NuGet.config确保后续 restore 从正确的 NuGet feed 拉取包。为什么 daily 通道需要生成 NuGet.config在 src/Aspire.Cli/Packaging/PackageChannel.cs 中ShouldPersistChannelName()与ShouldCreateNuGetConfig()两个方法揭示了设计意图stable通道将所有 Aspire 包映射到 nuget.org —— 这本身就是 NuGet 的默认源因此生成一份基于clear/的配置文件反而多余还会清除用户已经配置的其他 feeddailydnceng/dotnet9、stagingdarc-pub-microsoft-aspire-sha、pr-N/本地 hive 等通道都指向自定义 feed这些通道的映射必须持久化到NuGet.config否则 restore 会失败。也就是说哪些通道名会被钉住哪些通道会生成 NuGet.config这两个集合完全一致——即所有携带自定义 feed 映射的通道。[!TIP]aspire new会自动更新本地的 aspire 模板更新后的模板会立即可用于 Visual Studio 和dotnet new。这意味着即使你不通过 CLI 新建项目也能够在 IDE 中以每日构建模板为基础创建项目。五、更新既有项目到每日构建aspire update如果已经有一个 Aspire 项目可能是之前用 stable 通道创建的想把它升级到最新的每日构建只需在项目目录下执行aspire update该命令会把项目更新为使用 daily 通道的包与 feed。[!TIP]aspire update可以在任意时刻使用将项目升级到当前可用的最新 Aspire 构建包括每日构建。update 命令的完整选项从 src/Aspire.Cli/Commands/UpdateCommand.cs 可以看到aspire update除了无参数运行外还支持以下选项选项别名说明--apphost--project指定 AppHost 项目文件路径不指定时自动定位--self—更新 CLI 自身而非项目即 CLI 自更新模式--yes-y跳过交互确认直接接受默认值在非交互模式下为必填--migrate—包更新后自动应用待执行的迁移migration--channel—指定更新到的通道stable/daily/staging/pr-N等--quality—旧版参数为向后兼容保留但已隐藏--nuget-config-dir—指定 NuGet 配置文件目录通道的解析优先级源码中 UpdateCommand.cs 明确注释了通道解析的优先级顺序显式传入的--channel或隐藏的--quality距离所选 AppHost 项目最近的本地aspire.config.json中的channel配置注意是相对于被解析的 AppHost 项目目录而非当前工作目录全局配置中的channel只读路径仅当用户显式执行过aspire config set -g channel x时才生效当存在多个 hivePR 构建目录时交互式提示选择通道上述均不满足时回退到 Implicit默认通道。此外还有一个值得注意的细节如果当前运行的是pr-N或daily身份的 CLI且项目没有配置任何channelupdate会默认采用运行中 CLI 自身的身份通道从而避免项目被静默地降级到 nuget.org 的默认通道。包更新完成后的迁移检查aspire update在完成包更新后还会检查是否有待执行的迁移migration例如apphost.ts迁移到apphost.mts这类文件层面的约定变更。行为见 UpdateCommand.cs 的HandlePendingMigrationsAsync默认不带--migrate时仅打印非阻塞的提示信息列出待执行的迁移并提示可运行aspire update --migrate应用它们传入--migrate时会先列出全部待迁移项确认或--yes跳过确认后按序应用单个迁移失败只会告警不会让已经成功的包更新回滚为失败。该迁移检测复用了与aspire doctor相同的IMigration注册表因此未来新增的任何迁移都会自动在aspire update中呈现。CLI 自更新aspire update --selfaspire update --self用于更新 CLI 本身。从源码实现看UpdateCommand.cs 与 ExecuteSelfUpdateAsync不同安装方式的处理策略不同通过dotnet tool安装的 CLI直接打印对应的包管理器更新命令如dotnet tool update而非就地覆盖通过全局 npm 安装的 CLI同样委托给 npm 的更新命令避免覆盖 npm 管理的文件通过 Nix 安装打印nix profile upgrade aspire-cli/nix flake update input-name指引通过官方安装脚本安装的原生二进制会下载指定通道默认跟随运行 CLI 的身份通道或交互选择的最新归档备份当前可执行文件后原地替换并在更新后校验版本、提示PATH情况。此外在项目更新成功后如果当前通道有更新的 CLI 可用aspire update还会询问是否顺带更新 CLI此行为可被--yes自动接受。六、运行更新后的项目项目更新完成后直接运行aspire runaspire run会启动 AppHost拉起编排的各个资源与依赖服务并打开 Aspire Dashboard 供你观察分布式应用的日志、追踪与指标。如果项目是从 daily 通道创建的aspire run会按NuGet.config中记录的每日构建 feed 还原包并运行保证与 daily 包版本一致。七、常见问题与注意事项daily 构建不受官方支持文档明确说明 daily 是“最新但不受支持unsupported”的构建生产项目请使用 stable 通道的正式发布版。VS Code 扩展依赖 PATH扩展无法在aspire不在 PATH 时工作安装后如遇扩展报错先确认aspire --version是否可用。升级路径安全aspire update被定位为“恢复工具recovery tool”——即使 AppHost 钉住的Aspire.AppHost.Sdk已无法解析例如从一个 PR 构建升级到另一个 PR 构建它也能通过配置记录定位 AppHost 并重写钉住版本见 UpdateCommand.cs 的注释说明。非交互场景在 CI 等非交互环境使用aspire update时必须显式传入--yes源码中的校验器会强制该要求并用--channel显式指定通道避免交互式提示阻塞。多通道并存同一台机器上可以通过 hive 机制并存多个 PR/每日构建update在存在多个 hive 时会交互式询问目标通道。八、深入阅读如果想进一步了解 Aspire CLI 的通道与包管理机制可以在本仓库中继续阅读docs/machine-requirements.md机器环境完整要求容器运行时、IDE、Alpine 特殊说明src/Aspire.Cli/Commands/UpdateCommand.csaspire update的完整实现通道解析、迁移、自更新src/Aspire.Cli/Commands/NewCommand.csaspire new的向导与通道选择逻辑src/Aspire.Cli/Packaging/PackageChannel.cs通道模型、NuGet.config 生成决策、包质量过滤stable/prerelease的实现eng/scripts/get-aspire-cli.ps1 与 eng/scripts/README.mdCLI 下载脚本中release/staging/dev三种质量档位的说明docs/specs/cli-identity-sidecar.mdCLI 身份通道与 sidecar 机制的设计规格。【免费下载链接】aspireAspire is the tool for code-first, extensible, observable dev and deploy.项目地址: https://gitcode.com/GitHub_Trending/as/aspire创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表