{"record":{"id":"0a091c172c9ada58","repo":"microsoft/aspire","slug":"microsoft-foundry-project-resource-builder-resource-name","errorCode":null,"errorMessage":"Microsoft Foundry project resource '{builder.Resource.Name}' does not have a capability host configured. Call addCapabilityHost first.","messagePattern":"Microsoft Foundry project resource '(.+?)' does not have a capability host configured\\. Call addCapabilityHost first\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs","lineNumber":725,"sourceCode":"    private static AzureContainerRegistryResource CreateDefaultRegistry(IDistributedApplicationBuilder builder, string name)\n    {\n        var resource = new AzureContainerRegistryResource(name, ContainerRegistryInfrastructure.ConfigureContainerRegistry);\n        builder.AddResource(resource).WithIconName(\"Archive\");\n        return resource;\n    }\n\n    private static CapabilityHostConfiguration CreateCapabilityHostConfiguration(\n        IResourceBuilder<AzureCognitiveServicesProjectResource> builder,\n        string name)\n    {\n        var config = new CapabilityHostConfiguration(name);\n        builder.Resource.CapabilityHostConfiguration = config;\n        return config;\n    }\n\n    private static CapabilityHostConfiguration GetCapabilityHostConfiguration(IResourceBuilder<AzureCognitiveServicesProjectResource> builder)\n        => builder.Resource.CapabilityHostConfiguration\n            ?? throw new InvalidOperationException($\"Microsoft Foundry project resource '{builder.Resource.Name}' does not have a capability host configured. Call addCapabilityHost first.\");\n}\n","sourceCodeStart":707,"sourceCodeEnd":727,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs#L707-L727","documentation":"The internal WithCapabilityHost* setters (CosmosDB/Storage/Search/AzureOpenAI) require that a capability host configuration already exists on the Foundry project resource, created by AddCapabilityHost. GetCapabilityHostConfiguration throws this InvalidOperationException when CapabilityHostConfiguration is still null.","triggerScenarios":"Calling a WithCapabilityHostCosmosDB/Storage/Search/AzureOpenAI extension directly without first calling AddCapabilityHost (or the exported addCapabilityHost) on the same project builder.","commonSituations":"Using internal APIs in tests or extensions and skipping the initialization call; calling the setters on a different project builder instance than the one AddCapabilityHost was called on; refactor that removed the AddCapabilityHost call.","solutions":["Call project.AddCapabilityHost(\"name\") (or addCapabilityHost) before the WithCapabilityHost* calls","Ensure the same IResourceBuilder<AzureCognitiveServicesProjectResource> instance is used for both calls","Chain the calls off the result of AddCapabilityHost so the config exists"],"exampleFix":"// before\nproject.WithCapabilityHostCosmosDB(cosmosDb);\n\n// after\nproject.AddCapabilityHost(\"cap-host\").WithCapabilityHostCosmosDB(cosmosDb);","handlingStrategy":"validation","validationCode":"var capHost = project.AddCapabilityHost(\"cap-host\");\ncapHost.WithCapabilityHostCosmosDB(cosmosDb); // config now exists","typeGuard":null,"tryCatchPattern":"try { project.WithCapabilityHostCosmosDB(cosmosDb); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"does not have a capability host configured\"))\n{\n    // Call AddCapabilityHost first.\n}","preventionTips":["Always start capability-host configuration with AddCapabilityHost","Chain With* calls off the AddCapabilityHost result","Use the same builder instance throughout configuration"],"tags":["csharp","aspire","azure","missing-initialization"],"backgroundTag":"invalid-state-transition","analyzedSha":"25830f84bd145686607ad00c057b3f84e2e51d43","analyzedAt":"2026-09-16T11:10:06.193Z","contentChangedAt":"2026-09-16T11:10:06.193Z","schemaVersion":2},"datasetVersion":"2026-09-21T04:17:39.646Z"}