# MauiiOSExtensions Methods

- Package: [Aspire.Hosting.Maui](/reference/api/csharp/aspire.hosting.maui.md)
- Type: [MauiiOSExtensions](/reference/api/csharp/aspire.hosting.maui/mauiiosextensions.md)
- Kind: `Methods`
- Members: `6`

Provides extension methods for adding iOS platform resources to MAUI projects.

## AddiOSDevice(IResourceBuilder<MauiProjectResource>)

- Name: `AddiOSDevice(IResourceBuilder<MauiProjectResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<MauiiOSDeviceResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Maui/MauiiOSExtensions.cs#L56-L59)

Adds an iOS physical device resource to run the MAUI application on an iOS device.

```csharp
public static class MauiiOSExtensions
{
    public static IResourceBuilder<MauiiOSDeviceResource> AddiOSDevice(
        this IResourceBuilder<MauiProjectResource> builder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<MauiProjectResource>`)
  The MAUI project resource builder.

## Returns

`IResourceBuilder<MauiiOSDeviceResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method creates a new iOS device platform resource that will run the MAUI application targeting the iOS platform using `dotnet run`. The resource does not auto-start and must be explicitly started from the dashboard by clicking the start button.

The resource name will default to "{projectName}-ios-device".

This will run the application on a physical iOS device connected via USB. The device must be provisioned before deployment. For more information, see https://learn.microsoft.com/dotnet/maui/ios/device-provisioning

If only one device is attached, it will automatically use that device. If multiple devices are connected, use the overload with deviceId parameter to specify which device to use by UDID. You can find the device UDID in Xcode under Window > Devices and Simulators > Devices tab.

This overload is not available in polyglot app hosts. Use [MauiiOSExtensions.AddiOSDevice(IResourceBuilder<MauiProjectResource>)](/reference/api/csharp/aspire.hosting.maui/mauiiosextensions/methods.md#addiosdevice-iresourcebuilder-mauiprojectresource) instead.

## Examples

Add an iOS device to a MAUI project:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var maui = builder.AddMauiProject("mauiapp", "../MyMauiApp/MyMauiApp.csproj");
var iOSDevice = maui.AddiOSDevice();

builder.Build().Run();
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddiOSDevice(IResourceBuilder<MauiProjectResource>, string)

- Name: `AddiOSDevice(IResourceBuilder<MauiProjectResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<MauiiOSDeviceResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Maui/MauiiOSExtensions.cs#L107)

Adds an iOS physical device resource to run the MAUI application on an iOS device with a specific name.

```csharp
public static class MauiiOSExtensions
{
    public static IResourceBuilder<MauiiOSDeviceResource> AddiOSDevice(
        this IResourceBuilder<MauiProjectResource> builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<MauiProjectResource>`)
  The MAUI project resource builder.
- `name` (`string`)
  The name of the iOS device resource.

## Returns

`IResourceBuilder<MauiiOSDeviceResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method creates a new iOS device platform resource that will run the MAUI application targeting the iOS platform using `dotnet run`. The resource does not auto-start and must be explicitly started from the dashboard by clicking the start button.

Multiple iOS device resources can be added to the same MAUI project if needed, each with a unique name.

This will run the application on a physical iOS device connected via USB. The device must be provisioned before deployment. For more information, see https://learn.microsoft.com/dotnet/maui/ios/device-provisioning

If only one device is attached, it will automatically use that device. If multiple devices are connected, use the overload with deviceId parameter to specify which device to use by UDID. You can find the device UDID in Xcode under Window > Devices and Simulators > Devices tab.

This overload is not available in polyglot app hosts. Use [MauiiOSExtensions.AddiOSDevice(IResourceBuilder<MauiProjectResource>)](/reference/api/csharp/aspire.hosting.maui/mauiiosextensions/methods.md#addiosdevice-iresourcebuilder-mauiprojectresource) instead.

## Examples

Add multiple iOS devices to a MAUI project:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var maui = builder.AddMauiProject("mauiapp", "../MyMauiApp/MyMauiApp.csproj");
var device1 = maui.AddiOSDevice("ios-device-1");
var device2 = maui.AddiOSDevice("ios-device-2");

builder.Build().Run();
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddiOSDevice(IResourceBuilder<MauiProjectResource>, string, string?)

- Name: `AddiOSDevice(IResourceBuilder<MauiProjectResource>, string, string?)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<MauiiOSDeviceResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Maui/MauiiOSExtensions.cs#L159-L223)

Adds an iOS physical device resource to run the MAUI application on an iOS device with a specific name and device UDID.

```csharp
public static class MauiiOSExtensions
{
    public static IResourceBuilder<MauiiOSDeviceResource> AddiOSDevice(
        this IResourceBuilder<MauiProjectResource> builder,
        string name,
        string? deviceId = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<MauiProjectResource>`)
  The MAUI project resource builder.
- `name` (`string`)
  The name of the iOS device resource.
- `deviceId` (`string?`) `optional`
  Optional device UDID to target a specific iOS device. If not specified, uses the only attached device (requires exactly one device to be connected).

## Returns

`IResourceBuilder<MauiiOSDeviceResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method creates a new iOS device platform resource that will run the MAUI application targeting the iOS platform using `dotnet run`. The resource does not auto-start and must be explicitly started from the dashboard by clicking the start button.

Multiple iOS device resources can be added to the same MAUI project if needed, each with a unique name.

This will run the application on a physical iOS device connected via USB. The device must be provisioned before deployment. For more information, see https://learn.microsoft.com/dotnet/maui/ios/device-provisioning

To target a specific device when multiple are connected, provide the device UDID. You can find the device UDID in Xcode under Window > Devices and Simulators > Devices tab, or right-click on the device and select "Copy Identifier".

## Examples

Add multiple iOS devices to a MAUI project:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var maui = builder.AddMauiProject("mauiapp", "../MyMauiApp/MyMauiApp.csproj");

// Default device (only one attached)
var device1 = maui.AddiOSDevice("ios-device-default");

// Specific device by UDID
var device2 = maui.AddiOSDevice("ios-device-iphone13", "00008030-001234567890123A");

builder.Build().Run();
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## AddiOSSimulator(IResourceBuilder<MauiProjectResource>)

- Name: `AddiOSSimulator(IResourceBuilder<MauiProjectResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<MauiiOSSimulatorResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Maui/MauiiOSExtensions.cs#L262-L265)

Adds an iOS simulator resource to run the MAUI application on an iOS simulator.

```csharp
public static class MauiiOSExtensions
{
    public static IResourceBuilder<MauiiOSSimulatorResource> AddiOSSimulator(
        this IResourceBuilder<MauiProjectResource> builder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<MauiProjectResource>`)
  The MAUI project resource builder.

## Returns

`IResourceBuilder<MauiiOSSimulatorResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method creates a new iOS simulator platform resource that will run the MAUI application targeting the iOS platform using `dotnet run`. The resource does not auto-start and must be explicitly started from the dashboard by clicking the start button.

The resource name will default to "{projectName}-ios-simulator".

This will run the application on the default iOS simulator. If no simulator is currently running, Xcode will launch the default simulator. To target a specific simulator, use the overload with simulatorId parameter.

This overload is not available in polyglot app hosts. Use [MauiiOSExtensions.AddiOSSimulator(IResourceBuilder<MauiProjectResource>)](/reference/api/csharp/aspire.hosting.maui/mauiiosextensions/methods.md#addiossimulator-iresourcebuilder-mauiprojectresource) instead.

## Examples

Add an iOS simulator to a MAUI project:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var maui = builder.AddMauiProject("mauiapp", "../MyMauiApp/MyMauiApp.csproj");
var iOSSimulator = maui.AddiOSSimulator();

builder.Build().Run();
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddiOSSimulator(IResourceBuilder<MauiProjectResource>, string)

- Name: `AddiOSSimulator(IResourceBuilder<MauiProjectResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<MauiiOSSimulatorResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Maui/MauiiOSExtensions.cs#L308)

Adds an iOS simulator resource to run the MAUI application on an iOS simulator with a specific name.

```csharp
public static class MauiiOSExtensions
{
    public static IResourceBuilder<MauiiOSSimulatorResource> AddiOSSimulator(
        this IResourceBuilder<MauiProjectResource> builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<MauiProjectResource>`)
  The MAUI project resource builder.
- `name` (`string`)
  The name of the iOS simulator resource.

## Returns

`IResourceBuilder<MauiiOSSimulatorResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method creates a new iOS simulator platform resource that will run the MAUI application targeting the iOS platform using `dotnet run`. The resource does not auto-start and must be explicitly started from the dashboard by clicking the start button.

Multiple iOS simulator resources can be added to the same MAUI project if needed, each with a unique name.

This will run the application on the default iOS simulator. If no simulator is currently running, Xcode will launch the default simulator. To target a specific simulator, use the overload with simulatorId parameter.

This overload is not available in polyglot app hosts. Use [MauiiOSExtensions.AddiOSSimulator(IResourceBuilder<MauiProjectResource>)](/reference/api/csharp/aspire.hosting.maui/mauiiosextensions/methods.md#addiossimulator-iresourcebuilder-mauiprojectresource) instead.

## Examples

Add multiple iOS simulators to a MAUI project:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var maui = builder.AddMauiProject("mauiapp", "../MyMauiApp/MyMauiApp.csproj");
var simulator1 = maui.AddiOSSimulator("ios-simulator-1");
var simulator2 = maui.AddiOSSimulator("ios-simulator-2");

builder.Build().Run();
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddiOSSimulator(IResourceBuilder<MauiProjectResource>, string, string?)

- Name: `AddiOSSimulator(IResourceBuilder<MauiProjectResource>, string, string?)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<MauiiOSSimulatorResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Maui/MauiiOSExtensions.cs#L355-L415)

Adds an iOS simulator resource to run the MAUI application on an iOS simulator with a specific name and simulator UDID.

```csharp
public static class MauiiOSExtensions
{
    public static IResourceBuilder<MauiiOSSimulatorResource> AddiOSSimulator(
        this IResourceBuilder<MauiProjectResource> builder,
        string name,
        string? simulatorId = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<MauiProjectResource>`)
  The MAUI project resource builder.
- `name` (`string`)
  The name of the iOS simulator resource.
- `simulatorId` (`string?`) `optional`
  Optional simulator UDID to target a specific iOS simulator. If not specified, uses the default simulator.

## Returns

`IResourceBuilder<MauiiOSSimulatorResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method creates a new iOS simulator platform resource that will run the MAUI application targeting the iOS platform using `dotnet run`. The resource does not auto-start and must be explicitly started from the dashboard by clicking the start button.

Multiple iOS simulator resources can be added to the same MAUI project if needed, each with a unique name.

To target a specific simulator, provide the simulator UDID. You can find simulator UDIDs in Xcode under Window > Devices and Simulators > Simulators tab, right-click on a simulator and select "Copy Identifier", or use the command: /Applications/Xcode.app/Contents/Developer/usr/bin/simctl list

## Examples

Add multiple iOS simulators to a MAUI project:

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var maui = builder.AddMauiProject("mauiapp", "../MyMauiApp/MyMauiApp.csproj");

// Default simulator
var simulator1 = maui.AddiOSSimulator("ios-simulator-default");

// Specific simulator by UDID
var simulator2 = maui.AddiOSSimulator("ios-simulator-iphone15", "E25BBE37-69BA-4720-B6FD-D54C97791E79");

builder.Build().Run();
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
