Loading...
Loading...
Compare original and translation side by side
| Task | MCP Tool | NOT This |
|---|---|---|
| Check resource status | | ❌ curl to dashboard API |
| Get service logs | | ❌ curl, docker logs |
| View traces | | ❌ curl to OTLP endpoint |
| Find errors in traces | | ❌ manual dashboard search |
| List available AppHosts | | ❌ file system search |
aspire mcp init| 任务 | MCP工具 | 不推荐做法 |
|---|---|---|
| 检查资源状态 | | ❌ 用curl调用仪表盘API |
| 获取服务日志 | | ❌ curl、docker logs |
| 查看追踪数据 | | ❌ curl调用OTLP端点 |
| 在追踪数据中查找错误 | | ❌ 手动在仪表盘中搜索 |
| 列出可用的AppHost | | ❌ 文件系统搜索 |
aspire mcp init| Task | Reference File |
|---|---|
| AppHost patterns, resources, lifecycle | |
| Azure integrations (databases, messaging, AI) | |
| Database integrations (Postgres, SQL, Mongo) | |
| Caching (Redis, Valkey, Garnet) | |
| Messaging (Kafka, RabbitMQ, NATS) | |
| Polyglot (Node.js, Python, Go, Rust, Java) | |
| Deployment, CLI, and aspire do pipelines | |
| Testing with Aspire | |
| Errors and troubleshooting | |
| MCP integration for AI assistants | |
| VS Code extension | |
| Certificate trust configuration | |
| Migration from 9.x to 13.x | |
| 任务 | 参考文档 |
|---|---|
| AppHost模式、资源、生命周期 | |
| Azure集成(数据库、消息队列、AI) | |
| 数据库集成(Postgres、SQL、Mongo) | |
| 缓存(Redis、Valkey、Garnet) | |
| 消息队列(Kafka、RabbitMQ、NATS) | |
| 多语言支持(Node.js、Python、Go、Rust、Java) | |
| 部署、CLI及aspire do流水线 | |
| 使用Aspire进行测试 | |
| 错误排查 | |
| 面向AI助手的MCP集成 | |
| VS Code扩展 | |
| 证书信任配置 | |
| 从9.x迁移至13.x | |
| Wrong | Correct | Why |
|---|---|---|
| | Method is just |
| | |
| | Use AddUvicornApp for ASGI (FastAPI, Starlette) |
| | Package renamed in 13.0 |
| 错误用法 | 正确用法 | 原因 |
|---|---|---|
| | 方法已简化为 |
| | |
为FastAPI使用 | | 对于ASGI应用(FastAPI、Starlette)请使用AddUvicornApp |
| | 包名在13.0版本中已重命名 |
// WRONG - secrets exposed in source control
// appsettings.json: { "Parameters": { "api-key": "secret123" } }
// CORRECT - use user-secrets for development
// dotnet user-secrets set "Parameters:api-key" "secret123"// WRONG - secrets exposed in source control
// appsettings.json: { "Parameters": { "api-key": "secret123" } }
// CORRECT - use user-secrets for development
// dotnet user-secrets set "Parameters:api-key" "secret123"aspire-13-migration.mdaspire-13-migration.md// BEFORE (9.x) - REMOVED IN 13.0
builder.AddNpmApp("frontend", "../app", scriptName: "dev", args: ["--no-open"])
// AFTER (13.0) - Use AddJavaScriptApp or AddViteApp
builder.AddJavaScriptApp("frontend", "../app")
.WithRunScript("dev")
.WithArgs("--no-open");
// For Vite/React specifically:
builder.AddViteApp("frontend", "../app")
.WithHttpEndpoint(env: "PORT");
// Package renamed: Aspire.Hosting.NodeJs → Aspire.Hosting.JavaScript// BEFORE (9.x) - REMOVED IN 13.0
builder.AddNpmApp("frontend", "../app", scriptName: "dev", args: ["--no-open"])
// AFTER (13.0) - Use AddJavaScriptApp or AddViteApp
builder.AddJavaScriptApp("frontend", "../app")
.WithRunScript("dev")
.WithArgs("--no-open");
// For Vite/React specifically:
builder.AddViteApp("frontend", "../app")
.WithHttpEndpoint(env: "PORT");
// Package renamed: Aspire.Hosting.NodeJs → Aspire.Hosting.JavaScript// BEFORE (13.0) - DEPRECATED
builder.AddAzureRedisEnterprise("cache")
// AFTER (13.1)
builder.AddAzureManagedRedis("cache")// BEFORE (13.0) - DEPRECATED
builder.AddAzureRedisEnterprise("cache")
// AFTER (13.1)
builder.AddAzureManagedRedis("cache")// BEFORE (9.x) - containerHostName parameter removed
await resource.ProcessArgumentValuesAsync(
executionContext, processValue, logger,
containerHostName: "localhost", cancellationToken);
// AFTER (13.0) - Use NetworkIdentifier
await resource.ProcessArgumentValuesAsync(
executionContext, processValue, logger, cancellationToken);
// Get endpoints with network context
var endpoint = api.GetEndpoint("http", KnownNetworkIdentifiers.DefaultAspireContainerNetwork);// BEFORE (9.x) - containerHostName parameter removed
await resource.ProcessArgumentValuesAsync(
executionContext, processValue, logger,
containerHostName: "localhost", cancellationToken);
// AFTER (13.0) - Use NetworkIdentifier
await resource.ProcessArgumentValuesAsync(
executionContext, processValue, logger, cancellationToken);
// Get endpoints with network context
var endpoint = api.GetEndpoint("http", KnownNetworkIdentifiers.DefaultAspireContainerNetwork);// BEFORE (9.x)
public class MyPublisher : IDistributedApplicationPublisher { }
// AFTER (13.0) - Use aspire do pipelines instead
// IDistributedApplicationPublisher is deprecated// BEFORE (9.x)
public class MyPublisher : IDistributedApplicationPublisher { }
// AFTER (13.0) - Use aspire do pipelines instead
// IDistributedApplicationPublisher is deprecated// Automatic - no configuration needed
var pythonApi = builder.AddUvicornApp("api", "./api", "main:app");
var nodeApi = builder.AddJavaScriptApp("frontend", "./frontend");
// Both automatically trust development certificates// Automatic - no configuration needed
var pythonApi = builder.AddUvicornApp("api", "./api", "main:app");
var nodeApi = builder.AddJavaScriptApp("frontend", "./frontend");
// Both automatically trust development certificatesundefinedundefinedundefinedundefinedaspire do build # Build container images
aspire do push # Push to registry
aspire do deploy # Full deployment
aspire do diagnostics # Show available stepsaspire do build # Build container images
aspire do push # Push to registry
aspire do deploy # Full deployment
aspire do diagnostics # Show available stepsaspire init # Interactive setup
aspire init --single-file # Create .cs AppHost without .csprojaspire init # Interactive setup
aspire init --single-file # Create .cs AppHost without .csproj// apphost.cs - no project file needed
#:package Aspire.Hosting@*
#:package Aspire.Hosting.Redis@*
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.Build().Run();// apphost.cs - no project file needed
#:package Aspire.Hosting@*
#:package Aspire.Hosting.Redis@*
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.Build().Run();// Required packages:
// dotnet add package Aspire.Hosting.Python
// dotnet add package Aspire.Hosting.JavaScript (NOT NodeJs!)
// dotnet add package Aspire.Hosting.PostgreSQL
var builder = DistributedApplication.CreateBuilder(args);
// Database
var db = builder.AddPostgres("db")
.AddDatabase("appdata")
.WithDataVolume();
// FastAPI backend - use AddUvicornApp (NOT AddPythonApp!)
var api = builder.AddUvicornApp("api", "../api", "main:app")
.WithHttpEndpoint(port: 8000, env: "PORT")
.WithReference(db)
.WaitFor(db);
// React frontend - use AddViteApp (NOT AddNpmApp!)
builder.AddViteApp("frontend", "../frontend")
.WithHttpEndpoint(env: "PORT")
.WithExternalHttpEndpoints()
.WithReference(api);
builder.Build().Run();process.env.services__api__http__0// Required packages:
// dotnet add package Aspire.Hosting.Python
// dotnet add package Aspire.Hosting.JavaScript (NOT NodeJs!)
// dotnet add package Aspire.Hosting.PostgreSQL
var builder = DistributedApplication.CreateBuilder(args);
// Database
var db = builder.AddPostgres("db")
.AddDatabase("appdata")
.WithDataVolume();
// FastAPI backend - use AddUvicornApp (NOT AddPythonApp!)
var api = builder.AddUvicornApp("api", "../api", "main:app")
.WithHttpEndpoint(port: 8000, env: "PORT")
.WithReference(db)
.WaitFor(db);
// React frontend - use AddViteApp (NOT AddNpmApp!)
builder.AddViteApp("frontend", "../frontend")
.WithHttpEndpoint(env: "PORT")
.WithExternalHttpEndpoints()
.WithReference(api);
builder.Build().Run();process.env.services__api__http__0var builder = DistributedApplication.CreateBuilder(args);
// Database
var db = builder.AddPostgres("db")
.AddDatabase("appdata")
.WithDataVolume();
// API with database reference
var api = builder.AddProject<Projects.Api>("api")
.WithReference(db)
.WaitFor(db);
// Frontend with API reference
builder.AddViteApp("frontend", "../frontend")
.WithHttpEndpoint(env: "PORT")
.WithReference(api);
builder.Build().Run();var builder = DistributedApplication.CreateBuilder(args);
// Database
var db = builder.AddPostgres("db")
.AddDatabase("appdata")
.WithDataVolume();
// API with database reference
var api = builder.AddProject<Projects.Api>("api")
.WithReference(db)
.WaitFor(db);
// Frontend with API reference
builder.AddViteApp("frontend", "../frontend")
.WithHttpEndpoint(env: "PORT")
.WithReference(api);
builder.Build().Run();// Producer exposes endpoint
var api = builder.AddProject<Projects.Api>("api")
.WithHttpEndpoint(port: 5000, name: "api");
// Consumer references it (gets services__api__api__0 env var)
builder.AddProject<Projects.Web>("web")
.WithReference(api);// Producer exposes endpoint
var api = builder.AddProject<Projects.Api>("api")
.WithHttpEndpoint(port: 5000, name: "api");
// Consumer references it (gets services__api__api__0 env var)
builder.AddProject<Projects.Web>("web")
.WithReference(api);var db = builder.AddPostgres("db");
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.Api>("api")
.WithReference(db)
.WithReference(cache)
.WaitFor(db) // Wait for running
.WaitForHealthy(cache); // Wait for healthy (requires health check)var db = builder.AddPostgres("db");
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.Api>("api")
.WithReference(db)
.WithReference(cache)
.WaitFor(db) // Wait for running
.WaitForHealthy(cache); // Wait for healthy (requires health check)app-host.mdazure-integrations.mdRunAsEmulator()RunAsContainer()polyglot-integrations.mddeployment-cli.mdaspire deployaspire publishaspire doaspire initmcp-integration.mdvs-code-extension.mdcertificate-config.mdaspire-13-migration.mddiagnostics.mdapp-host.mdazure-integrations.mdRunAsEmulator()RunAsContainer()polyglot-integrations.mddeployment-cli.mdaspire deployaspire publishaspire doaspire initmcp-integration.mdvs-code-extension.mdcertificate-config.mdaspire-13-migration.mddiagnostics.md