-
Notifications
You must be signed in to change notification settings - Fork 1
DevHost
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.
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 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.
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.
The DevHost SDK support a fluent API when configuring the OrchestratorHost.
Projects can be executed using the .AddExecutable(..) method.
// example
.AddExecutable("caddy", "run", @"c:\\tools\caddy") // run caddy reverse proxyProject 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"))