diff --git a/IdentityServer/v7/Configuration/SoftwareStatement/Configuration/Configuration.csproj b/IdentityServer/v7/Configuration/SoftwareStatement/Configuration/Configuration.csproj
index 5db2b431..fc905bd0 100644
--- a/IdentityServer/v7/Configuration/SoftwareStatement/Configuration/Configuration.csproj
+++ b/IdentityServer/v7/Configuration/SoftwareStatement/Configuration/Configuration.csproj
@@ -12,5 +12,7 @@
-
+
+
+
diff --git a/IdentityServer/v7/Configuration/SoftwareStatement/Configuration/Program.cs b/IdentityServer/v7/Configuration/SoftwareStatement/Configuration/Program.cs
index e47fd371..86a8023c 100644
--- a/IdentityServer/v7/Configuration/SoftwareStatement/Configuration/Program.cs
+++ b/IdentityServer/v7/Configuration/SoftwareStatement/Configuration/Program.cs
@@ -9,9 +9,10 @@
using Duende.IdentityServer.EntityFramework.Storage;
using Microsoft.EntityFrameworkCore;
-Console.Title = "Configuration API";
-
var builder = WebApplication.CreateBuilder(args);
+
+builder.AddServiceDefaults();
+
builder.Services.AddIdentityServerConfiguration(opt => { })
.AddClientConfigurationStore();
@@ -44,6 +45,8 @@
var app = builder.Build();
+app.MapDefaultEndpoints();
+
app.UseAuthentication();
app.UseAuthorization();
app.MapDynamicClientRegistration().RequireAuthorization("DCR");
diff --git a/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/AppHost.cs b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/AppHost.cs
new file mode 100644
index 00000000..a1c73dcb
--- /dev/null
+++ b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/AppHost.cs
@@ -0,0 +1,54 @@
+var builder = DistributedApplication.CreateBuilder(args);
+
+var idp = builder.AddProject("identityserverhost");
+
+var configuration = builder.AddProject("configuration-api")
+ .WaitFor(idp);
+
+builder.AddProject("simple-api")
+ .WaitFor(idp);
+
+builder.AddProject("console-dcr-client")
+ .WaitFor(idp)
+ .WaitFor(configuration);
+
+idp.WithCommand(
+ name: "seed",
+ displayName: "Seed Database",
+ executeCommand: async (context) =>
+ {
+ var projectMetadata = idp.Resource.GetProjectMetadata();
+ var projectPath = projectMetadata.ProjectPath;
+ var process = new System.Diagnostics.Process
+ {
+ StartInfo = new System.Diagnostics.ProcessStartInfo
+ {
+ FileName = "dotnet",
+ Arguments = $"run --project \"{projectPath}\" --no-build -- /seed",
+ UseShellExecute = false,
+ RedirectStandardOutput = true,
+ RedirectStandardError = true,
+ CreateNoWindow = true
+ }
+ };
+
+ process.Start();
+ await process.WaitForExitAsync(context.CancellationToken);
+
+ if (process.ExitCode == 0)
+ {
+ return CommandResults.Success();
+ }
+ else
+ {
+ var error = await process.StandardError.ReadToEndAsync();
+ return CommandResults.Failure(error);
+ }
+ },
+ commandOptions: new CommandOptions
+ {
+ IconName = "DatabaseArrowUp",
+ IsHighlighted = true
+ });
+
+builder.Build().Run();
diff --git a/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/Properties/launchSettings.json b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/Properties/launchSettings.json
new file mode 100644
index 00000000..2fd7abcd
--- /dev/null
+++ b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/Properties/launchSettings.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "https": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "applicationUrl": "https://localhost:17050;http://localhost:15293",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21177",
+ "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23178",
+ "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22126"
+ }
+ },
+ "http": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "applicationUrl": "http://localhost:15293",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19222",
+ "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18151",
+ "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20036"
+ }
+ }
+ }
+}
diff --git a/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/SoftwareStatement.AppHost.csproj b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/SoftwareStatement.AppHost.csproj
new file mode 100644
index 00000000..34970118
--- /dev/null
+++ b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/SoftwareStatement.AppHost.csproj
@@ -0,0 +1,21 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.Development.json b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.Development.json
new file mode 100644
index 00000000..0c208ae9
--- /dev/null
+++ b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.json b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.json
new file mode 100644
index 00000000..31c092aa
--- /dev/null
+++ b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning",
+ "Aspire.Hosting.Dcp": "Warning"
+ }
+ }
+}
diff --git a/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.sln b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.sln
index 66f410de..129474a3 100644
--- a/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.sln
+++ b/IdentityServer/v7/Configuration/SoftwareStatement/SoftwareStatement.sln
@@ -11,30 +11,80 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IdentityServer", "..\Identi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApi", "..\..\Apis\SimpleApi\SimpleApi.csproj", "{68EC0130-6288-4DCB-A6F6-15C4503A384D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoftwareStatement.AppHost", "SoftwareStatement.AppHost\SoftwareStatement.AppHost.csproj", "{38129495-2E96-431B-BEEA-705A3F75FD15}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x64.Build.0 = Debug|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x86.Build.0 = Debug|Any CPU
{CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x64.ActiveCfg = Release|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x64.Build.0 = Release|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x86.ActiveCfg = Release|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x86.Build.0 = Release|Any CPU
{D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x64.Build.0 = Debug|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x86.Build.0 = Debug|Any CPU
{D134466E-58AE-4787-984B-FB6F95EEA969}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D134466E-58AE-4787-984B-FB6F95EEA969}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x64.ActiveCfg = Release|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x64.Build.0 = Release|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x86.ActiveCfg = Release|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x86.Build.0 = Release|Any CPU
{EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|x64.Build.0 = Debug|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|x86.Build.0 = Debug|Any CPU
{EF303AD6-A579-47DB-A195-7DED0A835707}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF303AD6-A579-47DB-A195-7DED0A835707}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Release|x64.ActiveCfg = Release|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Release|x64.Build.0 = Release|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Release|x86.ActiveCfg = Release|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Release|x86.Build.0 = Release|Any CPU
{68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|x64.Build.0 = Debug|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|x86.Build.0 = Debug|Any CPU
{68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|x64.ActiveCfg = Release|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|x64.Build.0 = Release|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|x86.ActiveCfg = Release|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|x86.Build.0 = Release|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Debug|x64.Build.0 = Debug|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Debug|x86.Build.0 = Debug|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Release|Any CPU.Build.0 = Release|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Release|x64.ActiveCfg = Release|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Release|x64.Build.0 = Release|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Release|x86.ActiveCfg = Release|Any CPU
+ {38129495-2E96-431B-BEEA-705A3F75FD15}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
diff --git a/IdentityServer/v8/Configuration/SoftwareStatement/Configuration/Configuration.csproj b/IdentityServer/v8/Configuration/SoftwareStatement/Configuration/Configuration.csproj
index 5db2b431..fc905bd0 100644
--- a/IdentityServer/v8/Configuration/SoftwareStatement/Configuration/Configuration.csproj
+++ b/IdentityServer/v8/Configuration/SoftwareStatement/Configuration/Configuration.csproj
@@ -12,5 +12,7 @@
-
+
+
+
diff --git a/IdentityServer/v8/Configuration/SoftwareStatement/Configuration/Program.cs b/IdentityServer/v8/Configuration/SoftwareStatement/Configuration/Program.cs
index e47fd371..86a8023c 100644
--- a/IdentityServer/v8/Configuration/SoftwareStatement/Configuration/Program.cs
+++ b/IdentityServer/v8/Configuration/SoftwareStatement/Configuration/Program.cs
@@ -9,9 +9,10 @@
using Duende.IdentityServer.EntityFramework.Storage;
using Microsoft.EntityFrameworkCore;
-Console.Title = "Configuration API";
-
var builder = WebApplication.CreateBuilder(args);
+
+builder.AddServiceDefaults();
+
builder.Services.AddIdentityServerConfiguration(opt => { })
.AddClientConfigurationStore();
@@ -44,6 +45,8 @@
var app = builder.Build();
+app.MapDefaultEndpoints();
+
app.UseAuthentication();
app.UseAuthorization();
app.MapDynamicClientRegistration().RequireAuthorization("DCR");
diff --git a/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/AppHost.cs b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/AppHost.cs
new file mode 100644
index 00000000..a1c73dcb
--- /dev/null
+++ b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/AppHost.cs
@@ -0,0 +1,54 @@
+var builder = DistributedApplication.CreateBuilder(args);
+
+var idp = builder.AddProject("identityserverhost");
+
+var configuration = builder.AddProject("configuration-api")
+ .WaitFor(idp);
+
+builder.AddProject("simple-api")
+ .WaitFor(idp);
+
+builder.AddProject("console-dcr-client")
+ .WaitFor(idp)
+ .WaitFor(configuration);
+
+idp.WithCommand(
+ name: "seed",
+ displayName: "Seed Database",
+ executeCommand: async (context) =>
+ {
+ var projectMetadata = idp.Resource.GetProjectMetadata();
+ var projectPath = projectMetadata.ProjectPath;
+ var process = new System.Diagnostics.Process
+ {
+ StartInfo = new System.Diagnostics.ProcessStartInfo
+ {
+ FileName = "dotnet",
+ Arguments = $"run --project \"{projectPath}\" --no-build -- /seed",
+ UseShellExecute = false,
+ RedirectStandardOutput = true,
+ RedirectStandardError = true,
+ CreateNoWindow = true
+ }
+ };
+
+ process.Start();
+ await process.WaitForExitAsync(context.CancellationToken);
+
+ if (process.ExitCode == 0)
+ {
+ return CommandResults.Success();
+ }
+ else
+ {
+ var error = await process.StandardError.ReadToEndAsync();
+ return CommandResults.Failure(error);
+ }
+ },
+ commandOptions: new CommandOptions
+ {
+ IconName = "DatabaseArrowUp",
+ IsHighlighted = true
+ });
+
+builder.Build().Run();
diff --git a/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/Properties/launchSettings.json b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/Properties/launchSettings.json
new file mode 100644
index 00000000..415172a6
--- /dev/null
+++ b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/Properties/launchSettings.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "https": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "applicationUrl": "https://localhost:17049;http://localhost:15292",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21176",
+ "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23177",
+ "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22125"
+ }
+ },
+ "http": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "applicationUrl": "http://localhost:15292",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19221",
+ "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18150",
+ "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20035"
+ }
+ }
+ }
+}
diff --git a/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/SoftwareStatement.AppHost.csproj b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/SoftwareStatement.AppHost.csproj
new file mode 100644
index 00000000..34970118
--- /dev/null
+++ b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/SoftwareStatement.AppHost.csproj
@@ -0,0 +1,21 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.Development.json b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.Development.json
new file mode 100644
index 00000000..0c208ae9
--- /dev/null
+++ b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.json b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.json
new file mode 100644
index 00000000..31c092aa
--- /dev/null
+++ b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.AppHost/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning",
+ "Aspire.Hosting.Dcp": "Warning"
+ }
+ }
+}
diff --git a/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.sln b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.sln
index 66f410de..1c1eff93 100644
--- a/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.sln
+++ b/IdentityServer/v8/Configuration/SoftwareStatement/SoftwareStatement.sln
@@ -11,30 +11,80 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IdentityServer", "..\Identi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApi", "..\..\Apis\SimpleApi\SimpleApi.csproj", "{68EC0130-6288-4DCB-A6F6-15C4503A384D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoftwareStatement.AppHost", "SoftwareStatement.AppHost\SoftwareStatement.AppHost.csproj", "{B3F8B3E4-34E4-4DBE-942C-752B70630E1F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x64.Build.0 = Debug|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x86.Build.0 = Debug|Any CPU
{CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x64.ActiveCfg = Release|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x64.Build.0 = Release|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x86.ActiveCfg = Release|Any CPU
+ {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x86.Build.0 = Release|Any CPU
{D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x64.Build.0 = Debug|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x86.Build.0 = Debug|Any CPU
{D134466E-58AE-4787-984B-FB6F95EEA969}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D134466E-58AE-4787-984B-FB6F95EEA969}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x64.ActiveCfg = Release|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x64.Build.0 = Release|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x86.ActiveCfg = Release|Any CPU
+ {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x86.Build.0 = Release|Any CPU
{EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|x64.Build.0 = Debug|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Debug|x86.Build.0 = Debug|Any CPU
{EF303AD6-A579-47DB-A195-7DED0A835707}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF303AD6-A579-47DB-A195-7DED0A835707}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Release|x64.ActiveCfg = Release|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Release|x64.Build.0 = Release|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Release|x86.ActiveCfg = Release|Any CPU
+ {EF303AD6-A579-47DB-A195-7DED0A835707}.Release|x86.Build.0 = Release|Any CPU
{68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|x64.Build.0 = Debug|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Debug|x86.Build.0 = Debug|Any CPU
{68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|x64.ActiveCfg = Release|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|x64.Build.0 = Release|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|x86.ActiveCfg = Release|Any CPU
+ {68EC0130-6288-4DCB-A6F6-15C4503A384D}.Release|x86.Build.0 = Release|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Debug|x64.Build.0 = Debug|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Debug|x86.Build.0 = Debug|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Release|x64.ActiveCfg = Release|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Release|x64.Build.0 = Release|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Release|x86.ActiveCfg = Release|Any CPU
+ {B3F8B3E4-34E4-4DBE-942C-752B70630E1F}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
diff --git a/samples.slnx b/samples.slnx
index d370de57..07e3c41b 100644
--- a/samples.slnx
+++ b/samples.slnx
@@ -246,6 +246,7 @@
+
@@ -466,6 +467,7 @@
+