# IDistributedApplicationBuilder

- Module: [Aspire.Hosting](/reference/api/typescript/aspire.hosting.md)
- Version: `13.2.0`
- Kind: `interface`
- Source: [GitHub](https://github.com/microsoft/aspire)

## Definition

```typescript
interface IDistributedApplicationBuilder {
  readonly appHostDirectory: string;
  readonly environment: IHostEnvironment;
  readonly eventing: IDistributedApplicationEventing;
  readonly executionContext: DistributedApplicationExecutionContext;
  readonly userSecretsManager: IUserSecretsManager;
  addConnectionString(
      name: string,
      environmentVariableName?: string): IResourceWithConnectionString;
  addConnectionStringBuilder(name: string, connectionStringBuilder: (obj: ReferenceExpressionBuilder) => Promise<void>): ConnectionStringResource;
  addConnectionStringExpression(
      name: string,
      connectionStringExpression: ReferenceExpression): ConnectionStringResource;
  addContainer(
      name: string,
      image: string): ContainerResource;
  addContainerRegistry(
      name: string,
      endpoint: ParameterResource,
      repository?: ParameterResource): ContainerRegistryResource;
  addContainerRegistryFromString(
      name: string,
      endpoint: string,
      repository?: string): ContainerRegistryResource;
  addCSharpApp(
      name: string,
      path: string): ProjectResource;
  addCSharpAppWithOptions(name: string, path: string, configure: (obj: ProjectResourceOptions) => Promise<void>): CSharpAppResource;
  addDockerfile(
      name: string,
      contextPath: string,
      dockerfilePath?: string,
      stage?: string): ContainerResource;
  addDotnetTool(
      name: string,
      packageId: string): DotnetToolResource;
  addExecutable(
      name: string,
      command: string,
      workingDirectory: string,
      args: string[]): ExecutableResource;
  addExternalService(
      name: string,
      url: string): ExternalServiceResource;
  addExternalServiceParameter(
      name: string,
      urlParameter: ParameterResource): ExternalServiceResource;
  addExternalServiceUri(
      name: string,
      uri: uri): ExternalServiceResource;
  addParameter(
      name: string,
      secret?: boolean): ParameterResource;
  addParameterFromConfiguration(
      name: string,
      configurationKey: string,
      secret?: boolean): ParameterResource;
  addParameterWithValue(
      name: string,
      value: string,
      publishValueAsDefault?: boolean,
      secret?: boolean): ParameterResource;
  addProject(
      name: string,
      projectPath: string,
      launchProfileName: string): ProjectResource;
  addProjectWithOptions(name: string, projectPath: string, configure: (obj: ProjectResourceOptions) => Promise<void>): ProjectResource;
  build(): DistributedApplication;
  getConfiguration(): IConfiguration;
  subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise<void>): DistributedApplicationEventSubscription;
  subscribeBeforeStart(callback: (arg: BeforeStartEvent) => Promise<void>): DistributedApplicationEventSubscription;
}
```

## Properties

- `appHostDirectory`: `string` `get` -- Gets the AppHostDirectory property
- `environment`: [IHostEnvironment](/reference/api/typescript/aspire.hosting/ihostenvironment.md) `get` -- Gets the Environment property
- `eventing`: [IDistributedApplicationEventing](/reference/api/typescript/aspire.hosting/idistributedapplicationeventing.md) `get` -- Gets the Eventing property
- `executionContext`: [DistributedApplicationExecutionContext](/reference/api/typescript/aspire.hosting/distributedapplicationexecutioncontext.md) `get` -- Gets the ExecutionContext property
- `userSecretsManager`: [IUserSecretsManager](/reference/api/typescript/aspire.hosting/iusersecretsmanager.md) `get` -- Gets the UserSecretsManager property

## Methods

- [addConnectionString](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addconnectionstring.md) -- `method` -- Adds a connection string resource
    ```typescript
  addConnectionString(name: string, environmentVariableName?: string): IResourceWithConnectionString
  ```
- [addConnectionStringBuilder](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addconnectionstringbuilder.md) -- `method` -- Adds a connection string with a builder callback
    ```typescript
  addConnectionStringBuilder(name: string, connectionStringBuilder: (obj: ReferenceExpressionBuilder) => Promise<void>): ConnectionStringResource
  ```
- [addConnectionStringExpression](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addconnectionstringexpression.md) -- `method` -- Adds a connection string with a reference expression
    ```typescript
  addConnectionStringExpression(name: string, connectionStringExpression: ReferenceExpression): ConnectionStringResource
  ```
- [addContainer](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addcontainer.md) -- `method` -- Adds a container resource
    ```typescript
  addContainer(name: string, image: string): ContainerResource
  ```
- [addContainerRegistry](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addcontainerregistry.md) -- `method` -- Adds a container registry resource
    ```typescript
  addContainerRegistry(name: string, endpoint: ParameterResource, repository?: ParameterResource): ContainerRegistryResource
  ```
- [addContainerRegistryFromString](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addcontainerregistryfromstring.md) -- `method` -- Adds a container registry with string endpoint
    ```typescript
  addContainerRegistryFromString(name: string, endpoint: string, repository?: string): ContainerRegistryResource
  ```
- [addCSharpApp](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addcsharpapp.md) -- `method` -- Adds a C# application resource
    ```typescript
  addCSharpApp(name: string, path: string): ProjectResource
  ```
- [addCSharpAppWithOptions](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addcsharpappwithoptions.md) -- `method` -- Adds a C# application resource with configuration options
    ```typescript
  addCSharpAppWithOptions(name: string, path: string, configure: (obj: ProjectResourceOptions) => Promise<void>): CSharpAppResource
  ```
- [addDockerfile](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/adddockerfile.md) -- `method` -- Adds a container resource built from a Dockerfile
    ```typescript
  addDockerfile(name: string, contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource
  ```
- [addDotnetTool](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/adddotnettool.md) -- `method` -- Adds a .NET tool resource
    ```typescript
  addDotnetTool(name: string, packageId: string): DotnetToolResource
  ```
- [addExecutable](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addexecutable.md) -- `method` -- Adds an executable resource
    ```typescript
  addExecutable(name: string, command: string, workingDirectory: string, args: string[]): ExecutableResource
  ```
- [addExternalService](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addexternalservice.md) -- `method` -- Adds an external service resource
    ```typescript
  addExternalService(name: string, url: string): ExternalServiceResource
  ```
- [addExternalServiceParameter](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addexternalserviceparameter.md) -- `method` -- Adds an external service with a parameter URL
    ```typescript
  addExternalServiceParameter(name: string, urlParameter: ParameterResource): ExternalServiceResource
  ```
- [addExternalServiceUri](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addexternalserviceuri.md) -- `method` -- Adds an external service with a URI
    ```typescript
  addExternalServiceUri(name: string, uri: uri): ExternalServiceResource
  ```
- [addParameter](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addparameter.md) -- `method` -- Adds a parameter resource
    ```typescript
  addParameter(name: string, secret?: boolean): ParameterResource
  ```
- [addParameterFromConfiguration](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addparameterfromconfiguration.md) -- `method` -- Adds a parameter sourced from configuration
    ```typescript
  addParameterFromConfiguration(name: string, configurationKey: string, secret?: boolean): ParameterResource
  ```
- [addParameterWithValue](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addparameterwithvalue.md) -- `method` -- Adds a parameter with a default value
    ```typescript
  addParameterWithValue(name: string, value: string, publishValueAsDefault?: boolean, secret?: boolean): ParameterResource
  ```
- [addProject](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addproject.md) -- `method` -- Adds a .NET project resource
    ```typescript
  addProject(name: string, projectPath: string, launchProfileName: string): ProjectResource
  ```
- [addProjectWithOptions](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/addprojectwithoptions.md) -- `method` -- Adds a project resource with configuration options
    ```typescript
  addProjectWithOptions(name: string, projectPath: string, configure: (obj: ProjectResourceOptions) => Promise<void>): ProjectResource
  ```
- [build](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/build.md) -- `method` -- Builds the distributed application
    ```typescript
  build(): DistributedApplication
  ```
- [getConfiguration](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/getconfiguration.md) -- `method` -- Gets the application configuration
    ```typescript
  getConfiguration(): IConfiguration
  ```
- [subscribeAfterResourcesCreated](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/subscribeafterresourcescreated.md) -- `method` -- Subscribes to the AfterResourcesCreated event
    ```typescript
  subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise<void>): DistributedApplicationEventSubscription
  ```
- [subscribeBeforeStart](/reference/api/typescript/aspire.hosting/idistributedapplicationbuilder/subscribebeforestart.md) -- `method` -- Subscribes to the BeforeStart event
    ```typescript
  subscribeBeforeStart(callback: (arg: BeforeStartEvent) => Promise<void>): DistributedApplicationEventSubscription
  ```
