Skip to content

DevHost

CloudFy edited this page Jan 28, 2026 · 5 revisions

NuGet version

Arcturus DevHost Sdk enables local developers to orchestrate dependencies and setup debug-pipelines to inter-connected projects.

The SDK enabled integration of a OrchestratorHostBuilder, allowing running dependencies (example program) and connect projects across the pipeline without using docker or podman.

Initial steps

To being using the Arcturus DevHost Sdk, add a Console application to your solution, or download the Arcturus DevHost Orchestrator template. Give it a simple name, ex MyProject.DevHost.

Add hosts to the orchestration project

Add related C# project references (hosts, API, webapps etc.) to the project. Each project reference will be referenced as a usable item within the Projects namespace.

Inject the SDK

When using a standard Console, edit the .csproj file and replace the following section. Using the Arcturus DevHost Orchestrator template, will automatically configure this step:

// replace ..
<Project Sdk="Microsoft.NET.Sdk.Web">
// .. with ..
<Project Sdk="Arcturus.DevHost.Sdk/2026.1.10.30">

Changing the target SDK adds all the dependencies.

Next add the following to the Program.cs:

using Arcturus.DevHost.Hosting;
using Microsoft.Extensions.Logging;

var builder = OrchestratorHostBuilder.Create();
builder.ConfigureLogging(l => l.SetMinimumLevel(LogLevel.Warning));
builder
    .AddProject<Projects.MyWeb_App>(c => c
        .WithUrls(["https://localhost:7202"])
        .WithEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development"))
    .AddExecutable(
        "caddy", "run", @"c:\\tools\caddy") // run caddy reverse proxy
    .AddExecutable(
        "npm", "run dev", @"C:\frontend\front-app"); // run react frontend

await builder.Build().RunAsync();

That's it. Set the MyProject.DevHost as startup, and see that both executables and projects are started and normal breakpoints and debugging is persisted.

Fluent API

The DevHost SDK support a fluent API when configuring the OrchestratorHost.

Executables

Projects can be executed using the .AddExecutable(..) method.

// example
.AddExecutable("caddy", "run", @"c:\\tools\caddy") // run caddy reverse proxy

Chain projects

Project references are automatically injected as metadata into the OrchestratorHost and can be used using the .AddProject<T>() method.

.AddProject<Projects.MyWeb_App>(c => c
        .WithUrls(["https://localhost:7202"])
        .WithEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development"))

Clone this wiki locally