# AzureCognitiveServicesProjectExtensions Methods

- Package: [Aspire.Hosting.Foundry](/reference/api/csharp/aspire.hosting.foundry.md)
- Type: [AzureCognitiveServicesProjectExtensions](/reference/api/csharp/aspire.hosting.foundry/azurecognitiveservicesprojectextensions.md)
- Kind: `Methods`
- Members: `7`

Extension methods for adding Microsoft Foundry project resources to the distributed application model.

## AddCapabilityHost(IResourceBuilder<AzureCognitiveServicesProjectResource>, string)

- Name: `AddCapabilityHost(IResourceBuilder<AzureCognitiveServicesProjectResource>, string)`
- Modifiers: `extension`
- Returns: [CapabilityHostBuilder](/reference/api/csharp/aspire.hosting.foundry/capabilityhostbuilder.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs#L147-L151)

Adds a capability host to the Microsoft Foundry project, enabling agent capabilities with external Azure resources such as CosmosDB, Storage, and Search.

```csharp
public static class AzureCognitiveServicesProjectExtensions
{
    public static CapabilityHostBuilder AddCapabilityHost(
        this IResourceBuilder<AzureCognitiveServicesProjectResource> builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureCognitiveServicesProjectResource>`)
  The resource builder for the Microsoft Foundry project.
- `name` (`string`)
  The name of the capability host.

## Returns

[CapabilityHostBuilder](/reference/api/csharp/aspire.hosting.foundry/capabilityhostbuilder.md) -- A [CapabilityHostBuilder](/reference/api/csharp/aspire.hosting.foundry/capabilityhostbuilder.md) for fluent configuration of the capability host resources.

## Remarks

This method is not available in polyglot app hosts.

## Examples

```csharp
project.AddCapabilityHost("cap-host")
    .WithCosmosDB(cosmosDb)
    .WithStorage(storage)
    .WithSearch(search)
    .WithAzureOpenAI(foundry);
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddModelDeployment(IResourceBuilder<AzureCognitiveServicesProjectResource>, string, FoundryModel)

- Name: `AddModelDeployment(IResourceBuilder<AzureCognitiveServicesProjectResource>, string, FoundryModel)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<FoundryDeploymentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs#L285-L287)

Adds a model deployment to the parent Microsoft Foundry resource of the Microsoft Foundry project.

```csharp
public static class AzureCognitiveServicesProjectExtensions
{
    public static IResourceBuilder<FoundryDeploymentResource> AddModelDeployment(
        this IResourceBuilder<AzureCognitiveServicesProjectResource> builder,
        string name,
        FoundryModel model)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureCognitiveServicesProjectResource>`)
  Aspire resource builder for a project
- `name` (`string`)
  Name to give the model deployment
- `model` ([FoundryModel](/reference/api/csharp/aspire.hosting.foundry/foundrymodel.md))
  The [FoundryModel](/reference/api/csharp/aspire.hosting.foundry/foundrymodel.md) to deploy.

## Returns

`IResourceBuilder<FoundryDeploymentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for the deployment resource.

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddModelDeployment(IResourceBuilder<AzureCognitiveServicesProjectResource>, string, string, string, string)

- Name: `AddModelDeployment(IResourceBuilder<AzureCognitiveServicesProjectResource>, string, string, string, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<FoundryDeploymentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs#L326-L328)

Adds a model deployment to the parent Microsoft Foundry resource of the Microsoft Foundry project.

```csharp
public static class AzureCognitiveServicesProjectExtensions
{
    public static IResourceBuilder<FoundryDeploymentResource> AddModelDeployment(
        this IResourceBuilder<AzureCognitiveServicesProjectResource> builder,
        string name,
        string modelName,
        string modelVersion,
        string format)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureCognitiveServicesProjectResource>`)
- `name` (`string`)
- `modelName` (`string`)
- `modelVersion` (`string`)
- `format` (`string`)

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddProject(IResourceBuilder<FoundryResource>, string)

- Name: `AddProject(IResourceBuilder<FoundryResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureCognitiveServicesProjectResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs#L43-L58)

Adds a Microsoft Foundry project resource to the application model. This will also attach the project as a deployment target for agents.

```csharp
public static class AzureCognitiveServicesProjectExtensions
{
    public static IResourceBuilder<AzureCognitiveServicesProjectResource> AddProject(
        this IResourceBuilder<FoundryResource> builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<FoundryResource>`)
  The `ApplicationModel.IResourceBuilder`1` for the parent Microsoft Foundry account resource.
- `name` (`string`)
  The name of the Microsoft Foundry project resource.

## Returns

`IResourceBuilder<AzureCognitiveServicesProjectResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for the Microsoft Foundry project resource.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithAppInsights(IResourceBuilder<AzureCognitiveServicesProjectResource>, IResourceBuilder<AzureApplicationInsightsResource>)

- Name: `WithAppInsights(IResourceBuilder<AzureCognitiveServicesProjectResource>, IResourceBuilder<AzureApplicationInsightsResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureCognitiveServicesProjectResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs#L121-L122)

Adds an Application Insights resource to the Microsoft Foundry project, overriding the default (which is to create a new Application Insights resource).

```csharp
public static class AzureCognitiveServicesProjectExtensions
{
    public static IResourceBuilder<AzureCognitiveServicesProjectResource> WithAppInsights(
        this IResourceBuilder<AzureCognitiveServicesProjectResource> builder,
        IResourceBuilder<AzureApplicationInsightsResource> appInsights)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureCognitiveServicesProjectResource>`)
  The resource builder for the Microsoft Foundry project.
- `appInsights` (`IResourceBuilder<AzureApplicationInsightsResource>`)
  The Application Insights resource to associate with the project.

## Returns

`IResourceBuilder<AzureCognitiveServicesProjectResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithKeyVault(IResourceBuilder<AzureCognitiveServicesProjectResource>, IResourceBuilder<AzureKeyVaultResource>)

- Name: `WithKeyVault(IResourceBuilder<AzureCognitiveServicesProjectResource>, IResourceBuilder<AzureKeyVaultResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureCognitiveServicesProjectResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs#L95-L105)

Adds a Key Vault connection to the Microsoft Foundry project.

```csharp
public static class AzureCognitiveServicesProjectExtensions
{
    public static IResourceBuilder<AzureCognitiveServicesProjectResource> WithKeyVault(
        this IResourceBuilder<AzureCognitiveServicesProjectResource> builder,
        IResourceBuilder<AzureKeyVaultResource> keyVault)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureCognitiveServicesProjectResource>`)
  The resource builder for the Microsoft Foundry project.
- `keyVault` (`IResourceBuilder<AzureKeyVaultResource>`)
  The Key Vault resource to associate with the project.

## Returns

`IResourceBuilder<AzureCognitiveServicesProjectResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## Exceptions

- `InvalidOperationException` -- Thrown when the project already has a Key Vault connection configured.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithReference(IResourceBuilder<TDestination>, IResourceBuilder<AzureCognitiveServicesProjectResource>)

- Name: `WithReference(IResourceBuilder<TDestination>, IResourceBuilder<AzureCognitiveServicesProjectResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<TDestination>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Foundry/Project/ProjectBuilderExtension.cs#L69-L79)

Adds a reference to a Microsoft Foundry project resource to the destination resource.

```csharp
public static class AzureCognitiveServicesProjectExtensions
{
    public static IResourceBuilder<TDestination> WithReference<TDestination>(
        this IResourceBuilder<TDestination> builder,
        IResourceBuilder<AzureCognitiveServicesProjectResource> project)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<TDestination>`)
- `project` (`IResourceBuilder<AzureCognitiveServicesProjectResource>`)

## Remarks

This overload is not available in polyglot app hosts. Use the standard `WithReference` overload instead.

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.
