# RuntimeSpec Properties

- Package: [Aspire.TypeSystem](/reference/api/csharp/aspire.typesystem.md)
- Type: [RuntimeSpec](/reference/api/csharp/aspire.typesystem/runtimespec.md)
- Kind: `Properties`
- Members: `12`

Specifies the runtime execution configuration for a language.

## CodeGenLanguage

- Name: `CodeGenLanguage`
- Modifiers: `get; init`
- Returns: `string`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the code generation language identifier for the generateCode RPC.

```csharp
public string CodeGenLanguage { get; init; }
```

## DetectionPatterns

- Name: `DetectionPatterns`
- Modifiers: `get; init`
- Returns: `string[]`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the file patterns used to detect this language (e.g., ["apphost.ts"]).

```csharp
public string[] DetectionPatterns { get; init; }
```

## DisplayName

- Name: `DisplayName`
- Modifiers: `get; init`
- Returns: `string`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the display name for the language (e.g., "TypeScript (Node.js)").

```csharp
public string DisplayName { get; init; }
```

## Execute

- Name: `Execute`
- Modifiers: `get; init`
- Returns: [CommandSpec](/reference/api/csharp/aspire.typesystem/commandspec.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the command to execute the AppHost for run.

```csharp
public CommandSpec Execute { get; init; }
```

## ExtensionLaunchCapability

- Name: `ExtensionLaunchCapability`
- Modifiers: `nullable` `get; init`
- Returns: `string?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the extension capability required to launch this language via the VS Code extension. When set (e.g., "node"), the CLI will use the extension launcher if the extension reports this capability. When null, the CLI always uses the default process-based launcher.

```csharp
public string? ExtensionLaunchCapability { get; init; }
```

## Initialize

- Name: `Initialize`
- Modifiers: `nullable` `get; init`
- Returns: `CommandSpec[]?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the commands to initialize the project environment (e.g., create a virtual environment and install dependencies). Runs once during scaffolding. Null if no initialization is needed.

```csharp
public CommandSpec[]? Initialize { get; init; }
```

## InstallDependencies

- Name: `InstallDependencies`
- Modifiers: `nullable` `get; init`
- Returns: [CommandSpec?](/reference/api/csharp/aspire.typesystem/commandspec.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the command to install dependencies. Null if no dependencies to install.

```csharp
public CommandSpec? InstallDependencies { get; init; }
```

## Language

- Name: `Language`
- Modifiers: `get; init`
- Returns: `string`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the language identifier (e.g., "TypeScript", "Python").

```csharp
public string Language { get; init; }
```

## MigrationFiles

- Name: `MigrationFiles`
- Modifiers: `nullable` `get; init`
- Returns: `Dictionary<string, string>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets files that must exist in the project directory before execution. If a file in this dictionary is missing, the CLI will create it with the provided content. This supports upgrade scenarios where new runtime requirements are introduced.

```csharp
public Dictionary<string, string>? MigrationFiles { get; init; }
```

## PreExecute

- Name: `PreExecute`
- Modifiers: `nullable` `get; init`
- Returns: `CommandSpec[]?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the commands to run before executing or publishing the AppHost. Null if no pre-execution validation is needed. Watch-mode validation should be part of [RuntimeSpec.WatchExecute](/reference/api/csharp/aspire.typesystem/runtimespec/properties.md#watchexecute) when needed.

```csharp
public CommandSpec[]? PreExecute { get; init; }
```

## PublishExecute

- Name: `PublishExecute`
- Modifiers: `nullable` `get; init`
- Returns: [CommandSpec?](/reference/api/csharp/aspire.typesystem/commandspec.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the command to execute the AppHost for publish. Null to use Execute with args appended.

```csharp
public CommandSpec? PublishExecute { get; init; }
```

## WatchExecute

- Name: `WatchExecute`
- Modifiers: `nullable` `get; init`
- Returns: [CommandSpec?](/reference/api/csharp/aspire.typesystem/commandspec.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/RuntimeSpec.cs)

Gets the command to execute the AppHost in watch mode. Null if watch mode not supported.

```csharp
public CommandSpec? WatchExecute { get; init; }
```
