From 1806314826facab4ad9b94e3c9c903fe4d670cd2 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 3 Feb 2026 15:35:04 +0000
Subject: [PATCH 1/3] Initial plan
From f124ceaa317e73311e56f08654faa9d13ed7ca79 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 3 Feb 2026 15:41:42 +0000
Subject: [PATCH 2/3] Change GetHostAddressExpression implementations to public
methods
Co-authored-by: eerhardt <8291187+eerhardt@users.noreply.github.com>
---
.../AzureContainerAppEnvironmentResource.cs | 3 ++-
.../AzureAppServiceEnvironmentResource.cs | 3 ++-
.../DockerComposeEnvironmentResource.cs | 8 ++------
.../KubernetesEnvironmentResource.cs | 8 ++------
tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs | 2 +-
.../Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs | 2 +-
tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs | 2 +-
.../KubernetesEnvironmentResourceTests.cs | 2 +-
8 files changed, 12 insertions(+), 18 deletions(-)
diff --git a/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs b/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs
index ccd76135e29..41a51e3c149 100644
--- a/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs
+++ b/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs
@@ -231,7 +231,8 @@ public AzureContainerRegistryResource? ContainerRegistry
ReferenceExpression IAzureContainerRegistry.ManagedIdentityId => ReferenceExpression.Create($"{ContainerRegistryManagedIdentityId}");
#pragma warning restore CS0618 // Type or member is obsolete
- ReferenceExpression IComputeEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference)
+ ///
+ public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference)
{
var resource = endpointReference.Resource;
diff --git a/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs b/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs
index 16c815a74f1..979272a738e 100644
--- a/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs
+++ b/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs
@@ -381,7 +381,8 @@ public AzureContainerRegistryResource? ContainerRegistry
ReferenceExpression IAzureContainerRegistry.ManagedIdentityId => ReferenceExpression.Create($"{ContainerRegistryManagedIdentityId}");
#pragma warning restore CS0618 // Type or member is obsolete
- ReferenceExpression IComputeEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference)
+ ///
+ public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference)
{
var resource = endpointReference.Resource;
return ReferenceExpression.Create($"{resource.Name.ToLowerInvariant()}-{WebSiteSuffix}.azurewebsites.net");
diff --git a/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs b/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs
index 4f7fa6dd05a..4b0a8d325bc 100644
--- a/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs
+++ b/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs
@@ -185,12 +185,8 @@ public DockerComposeEnvironmentResource(string name) : base(name)
}));
}
- ///
- /// Computes the host URL for the given .
- ///
- /// The endpoint reference to compute the host address for.
- /// A representing the host address.
- ReferenceExpression IComputeEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference)
+ ///
+ public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference)
{
var resource = endpointReference.Resource;
diff --git a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs
index 36871ca8d96..7bc52269be8 100644
--- a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs
+++ b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs
@@ -99,12 +99,8 @@ public KubernetesEnvironmentResource(string name) : base(name)
}));
}
- ///
- /// Computes the host URL for the given .
- ///
- /// The endpoint reference to compute the host address for.
- /// A representing the host address.
- ReferenceExpression IComputeEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference)
+ ///
+ public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference)
{
var resource = endpointReference.Resource;
diff --git a/tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs b/tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs
index 23fc6d8c489..67041919ce8 100644
--- a/tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs
+++ b/tests/Aspire.Hosting.Azure.Tests/AzureAppServiceTests.cs
@@ -754,7 +754,7 @@ public async Task GetHostAddressExpression()
.AddProject("project1", launchProfileName: null)
.WithHttpEndpoint();
- var endpointReferenceEx = ((IComputeEnvironmentResource)env.Resource).GetHostAddressExpression(project.GetEndpoint("http"));
+ var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http"));
Assert.NotNull(endpointReferenceEx);
Assert.Equal("project1-{0}.azurewebsites.net", endpointReferenceEx.Format);
diff --git a/tests/Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs b/tests/Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs
index a0fe44a8a1a..2ffe5d25d2f 100644
--- a/tests/Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs
+++ b/tests/Aspire.Hosting.Azure.Tests/AzureContainerAppsTests.cs
@@ -2099,7 +2099,7 @@ public async Task GetHostAddressExpression()
.AddProject("project1", launchProfileName: null)
.WithHttpEndpoint();
- var endpointReferenceEx = ((IComputeEnvironmentResource)env.Resource).GetHostAddressExpression(project.GetEndpoint("http"));
+ var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http"));
Assert.NotNull(endpointReferenceEx);
Assert.Equal("project1.internal.{0}", endpointReferenceEx.Format);
diff --git a/tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs b/tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs
index b144728cc69..15034bb96c0 100644
--- a/tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs
+++ b/tests/Aspire.Hosting.Docker.Tests/DockerComposeTests.cs
@@ -221,7 +221,7 @@ public async Task GetHostAddressExpression()
.AddProject("Project1", launchProfileName: null)
.WithHttpEndpoint();
- var endpointReferenceEx = ((IComputeEnvironmentResource)env.Resource).GetHostAddressExpression(project.GetEndpoint("http"));
+ var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http"));
Assert.NotNull(endpointReferenceEx);
Assert.Equal("project1", endpointReferenceEx.Format);
diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesEnvironmentResourceTests.cs b/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesEnvironmentResourceTests.cs
index 7d061268233..68b23573eca 100644
--- a/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesEnvironmentResourceTests.cs
+++ b/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesEnvironmentResourceTests.cs
@@ -105,7 +105,7 @@ public async Task GetHostAddressExpression()
.AddProject("project1", launchProfileName: null)
.WithHttpEndpoint();
- var endpointReferenceEx = ((IComputeEnvironmentResource)env.Resource).GetHostAddressExpression(project.GetEndpoint("http"));
+ var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http"));
Assert.NotNull(endpointReferenceEx);
Assert.Equal("project1-service", endpointReferenceEx.Format);
From 9a3954a3558c951149a64d326c2b2ee32393fabe Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 3 Feb 2026 15:50:49 +0000
Subject: [PATCH 3/3] Add Experimental attribute to GetHostAddressExpression
methods
Co-authored-by: eerhardt <8291187+eerhardt@users.noreply.github.com>
---
.../AzureContainerAppEnvironmentResource.cs | 2 ++
.../AzureAppServiceEnvironmentResource.cs | 2 ++
src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs | 2 ++
src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs | 2 ++
4 files changed, 8 insertions(+)
diff --git a/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs b/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs
index 41a51e3c149..e3c48d0e18b 100644
--- a/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs
+++ b/src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs
@@ -4,6 +4,7 @@
#pragma warning disable ASPIREPIPELINES001
#pragma warning disable ASPIREAZURE001
+using System.Diagnostics.CodeAnalysis;
using Aspire.Hosting.ApplicationModel;
using Aspire.Hosting.Pipelines;
using Azure.Provisioning;
@@ -232,6 +233,7 @@ public AzureContainerRegistryResource? ContainerRegistry
#pragma warning restore CS0618 // Type or member is obsolete
///
+ [Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")]
public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference)
{
var resource = endpointReference.Resource;
diff --git a/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs b/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs
index 979272a738e..59a433772f6 100644
--- a/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs
+++ b/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs
@@ -4,6 +4,7 @@
#pragma warning disable ASPIREPIPELINES001
#pragma warning disable ASPIREAZURE001
+using System.Diagnostics.CodeAnalysis;
using System.Text;
using Aspire.Hosting.ApplicationModel;
using Aspire.Hosting.Azure.AppService;
@@ -382,6 +383,7 @@ public AzureContainerRegistryResource? ContainerRegistry
#pragma warning restore CS0618 // Type or member is obsolete
///
+ [Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")]
public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference)
{
var resource = endpointReference.Resource;
diff --git a/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs b/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs
index 4b0a8d325bc..06ec7223398 100644
--- a/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs
+++ b/src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs
@@ -4,6 +4,7 @@
#pragma warning disable ASPIREPIPELINES001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
#pragma warning disable ASPIREPIPELINES003 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
+using System.Diagnostics.CodeAnalysis;
using Aspire.Hosting.ApplicationModel;
using Aspire.Hosting.Dcp.Process;
using Aspire.Hosting.Docker.Resources;
@@ -186,6 +187,7 @@ public DockerComposeEnvironmentResource(string name) : base(name)
}
///
+ [Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")]
public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference)
{
var resource = endpointReference.Resource;
diff --git a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs
index 7bc52269be8..edb0357720f 100644
--- a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs
+++ b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs
@@ -3,6 +3,7 @@
#pragma warning disable ASPIREPIPELINES001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
+using System.Diagnostics.CodeAnalysis;
using Aspire.Hosting.ApplicationModel;
using Aspire.Hosting.Kubernetes.Extensions;
using Aspire.Hosting.Pipelines;
@@ -100,6 +101,7 @@ public KubernetesEnvironmentResource(string name) : base(name)
}
///
+ [Experimental("ASPIRECOMPUTE002", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")]
public ReferenceExpression GetHostAddressExpression(EndpointReference endpointReference)
{
var resource = endpointReference.Resource;