部署清单
更新: 2026-10-16 15:20:09 字数: 0 字 时长: 0 分钟
部署清单(deployment manifest) 是 aspire publish 生成的核心产物——一份描述整个应用的 JSON 文档。它是「AppHost 应用模型」到「具体部署平台」之间的中间层。
生成清单
bash
aspire publish产物默认写到输出目录(通常是 ./aspire-output 或由 --output-path 指定)。
先 publish 再 deploy
aspire publish 只做序列化,不构建镜像、不改动环境。它非常适合:
- 在 CI 里审查「这次上线到底会生成什么」。
- 把产物交给已有的部署流程(GitOps、自定义脚本)。
- 调试发布行为。
清单里有什么
清单以资源为中心组织,包含:
| 部分 | 内容 |
|---|---|
resources | 每个资源的类型、名称与属性。 |
| 绑定 / 端点 | 资源暴露的端点与环境变量注入规则。 |
| 参数 | AddParameter 声明的参数,以及它们在部署时的占位符。 |
| 引用关系 | 资源之间的连接方式(连接字符串、服务发现)。 |
参数占位符
发布产物中,机密与环境相关的值不会以明文出现,而是使用占位符。这样做的目的是:
- 同一份产物可以在不同环境复用。
- 机密由部署平台注入,而不是写进文件。
text
{ "type": "parameter.v0",
"value": "{inputs.input-parameters.some-secret.value}"
}部署时,Aspire(或您的部署流程)负责把这些占位符替换为实际值。
不要把生产机密写进 AppHost 配置
清单中的占位符只是「结构」,真正的值来自部署时的参数或平台机密存储。把明文写进 appsettings.json 会让它进入版本库。
事件钩子
发布前后可以挂载逻辑,用于校验或清理:
csharp
builder.OnBeforePublish((evt, ct) =>
{
// 发布前校验资源
return Task.CompletedTask;
});
builder.OnAfterPublish((evt, ct) =>
{
// 发布后的清理或通知
return Task.CompletedTask;
});| 事件 | 触发时机 | 典型用途 |
|---|---|---|
BeforePublishEvent | 发布开始前 | 校验或修改资源后再生成清单。 |
AfterPublishEvent | 发布完成后 | 清理、通知、上传。 |
状态缓存
Aspire 会缓存上一次发布 / 部署的状态,用于跳过没有变化的步骤,从而加快重复发布:
bash
aspire publish # 首次:完整执行
aspire publish # 二次:仅处理变化部分




