diff --git a/IdentityServer/v7/TokenExchange/Client/Client.csproj b/IdentityServer/v7/TokenExchange/Client/Client.csproj
index df7831cf..f5582393 100644
--- a/IdentityServer/v7/TokenExchange/Client/Client.csproj
+++ b/IdentityServer/v7/TokenExchange/Client/Client.csproj
@@ -7,6 +7,6 @@
-
+
diff --git a/IdentityServer/v7/TokenExchange/Client/TokenResponseExtensions.cs b/IdentityServer/v7/TokenExchange/Client/TokenResponseExtensions.cs
index 680e8c8d..9da417ff 100644
--- a/IdentityServer/v7/TokenExchange/Client/TokenResponseExtensions.cs
+++ b/IdentityServer/v7/TokenExchange/Client/TokenResponseExtensions.cs
@@ -1,6 +1,7 @@
// Copyright (c) Duende Software. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.
+using System.Buffers.Text;
using System.Diagnostics;
using System.Text;
using System.Text.Json;
@@ -26,8 +27,8 @@ public static void Show(this TokenResponse response)
var header = parts[0];
var claims = parts[1];
- Console.WriteLine(PrettyPrintJson(Encoding.UTF8.GetString(Base64Url.Decode(header))));
- Console.WriteLine(PrettyPrintJson(Encoding.UTF8.GetString(Base64Url.Decode(claims))));
+ Console.WriteLine(PrettyPrintJson(Encoding.UTF8.GetString(Base64Url.DecodeFromChars(header))));
+ Console.WriteLine(PrettyPrintJson(Encoding.UTF8.GetString(Base64Url.DecodeFromChars(claims))));
}
}
else
diff --git a/IdentityServer/v7/TokenExchange/IdentityServerHost/IdentityServerHost.csproj b/IdentityServer/v7/TokenExchange/IdentityServerHost/IdentityServerHost.csproj
index 0b08b62c..17c7b763 100644
--- a/IdentityServer/v7/TokenExchange/IdentityServerHost/IdentityServerHost.csproj
+++ b/IdentityServer/v7/TokenExchange/IdentityServerHost/IdentityServerHost.csproj
@@ -7,6 +7,9 @@
-
+
+
+
+
diff --git a/IdentityServer/v7/TokenExchange/IdentityServerHost/Program.cs b/IdentityServer/v7/TokenExchange/IdentityServerHost/Program.cs
index b655fe29..e68eaefb 100644
--- a/IdentityServer/v7/TokenExchange/IdentityServerHost/Program.cs
+++ b/IdentityServer/v7/TokenExchange/IdentityServerHost/Program.cs
@@ -4,20 +4,12 @@
using IdentityServerHost;
using Microsoft.AspNetCore.DataProtection;
-using Serilog;
-using Serilog.Sinks.SystemConsole.Themes;
Console.Title = "IdentityServer";
-Log.Logger = new LoggerConfiguration()
- .MinimumLevel.Information()
- .Enrich.FromLogContext()
- .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code)
- .CreateLogger();
-
var builder = WebApplication.CreateBuilder(args);
-builder.Services.AddSerilog();
+builder.AddServiceDefaults();
var idsvrBuilder = builder.Services.AddIdentityServer()
.AddInMemoryApiScopes(Config.Scopes)
@@ -36,6 +28,8 @@
var app = builder.Build();
+app.MapDefaultEndpoints();
+
app.UseDeveloperExceptionPage();
app.UseIdentityServer();
diff --git a/IdentityServer/v7/TokenExchange/README.md b/IdentityServer/v7/TokenExchange/README.md
new file mode 100644
index 00000000..1094b9dc
--- /dev/null
+++ b/IdentityServer/v7/TokenExchange/README.md
@@ -0,0 +1,5 @@
+**Token Exchange Sample**
+
+ This sample requires multiple projects to be run at once. That can easily be done by running the included Aspire AppHost. The Aspire dashboard will show the status of all running applications and show you the links to the running applications. Aspire will also collect the Open Telemetry data (logs, metrics, traces) and make it available on the dashboard.
+For the included console application please look at the output of your IDE to see the results.
+
diff --git a/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/AppHost.cs b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/AppHost.cs
new file mode 100644
index 00000000..d6c5d32a
--- /dev/null
+++ b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/AppHost.cs
@@ -0,0 +1,7 @@
+var builder = DistributedApplication.CreateBuilder(args);
+
+var idsrv = builder.AddProject("identityserverhost");
+builder.AddProject("client")
+ .WaitFor(idsrv);
+
+builder.Build().Run();
diff --git a/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/Properties/launchSettings.json b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/Properties/launchSettings.json
new file mode 100644
index 00000000..af39238b
--- /dev/null
+++ b/IdentityServer/v7/TokenExchange/TokenExchange.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:17036;http://localhost:15277",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21012",
+ "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23192",
+ "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22249"
+ }
+ },
+ "http": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "applicationUrl": "http://localhost:15277",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19284",
+ "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18147",
+ "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20272"
+ }
+ }
+ }
+}
diff --git a/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/TokenExchange.AppHost.csproj b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/TokenExchange.AppHost.csproj
new file mode 100644
index 00000000..7c20cbd5
--- /dev/null
+++ b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/TokenExchange.AppHost.csproj
@@ -0,0 +1,16 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+ 7345a95a-3a14-4c9b-985a-1dac550f4368
+
+
+
+
+
+
+
+
diff --git a/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/appsettings.Development.json b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/appsettings.Development.json
new file mode 100644
index 00000000..0c208ae9
--- /dev/null
+++ b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/appsettings.json b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/appsettings.json
new file mode 100644
index 00000000..31c092aa
--- /dev/null
+++ b/IdentityServer/v7/TokenExchange/TokenExchange.AppHost/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning",
+ "Aspire.Hosting.Dcp": "Warning"
+ }
+ }
+}
diff --git a/IdentityServer/v7/TokenExchange/TokenExchange.sln b/IdentityServer/v7/TokenExchange/TokenExchange.sln
index 1964e44e..9ce985ba 100755
--- a/IdentityServer/v7/TokenExchange/TokenExchange.sln
+++ b/IdentityServer/v7/TokenExchange/TokenExchange.sln
@@ -7,6 +7,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServerHost", "Ident
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client", "Client\Client.csproj", "{93B5DD40-6D86-4E99-AA89-CBB41F70E40F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TokenExchange.AppHost", "TokenExchange.AppHost\TokenExchange.AppHost.csproj", "{EB806040-C123-4877-BE99-8EAE9C8FFAA8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.ServiceDefaults", "..\Aspire.ServiceDefaults\Aspire.ServiceDefaults.csproj", "{F85570AF-140B-4006-94DC-2D6DFD7B3231}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -41,6 +45,30 @@ Global
{93B5DD40-6D86-4E99-AA89-CBB41F70E40F}.Release|x64.Build.0 = Release|Any CPU
{93B5DD40-6D86-4E99-AA89-CBB41F70E40F}.Release|x86.ActiveCfg = Release|Any CPU
{93B5DD40-6D86-4E99-AA89-CBB41F70E40F}.Release|x86.Build.0 = Release|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Debug|x64.Build.0 = Debug|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Debug|x86.Build.0 = Debug|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Release|x64.ActiveCfg = Release|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Release|x64.Build.0 = Release|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Release|x86.ActiveCfg = Release|Any CPU
+ {EB806040-C123-4877-BE99-8EAE9C8FFAA8}.Release|x86.Build.0 = Release|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Debug|x64.Build.0 = Debug|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Debug|x86.Build.0 = Debug|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Release|x64.ActiveCfg = Release|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Release|x64.Build.0 = Release|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Release|x86.ActiveCfg = Release|Any CPU
+ {F85570AF-140B-4006-94DC-2D6DFD7B3231}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/IdentityServer/v8/TokenExchange/IdentityServerHost/IdentityServerHost.csproj b/IdentityServer/v8/TokenExchange/IdentityServerHost/IdentityServerHost.csproj
index a28de961..3b532ccf 100644
--- a/IdentityServer/v8/TokenExchange/IdentityServerHost/IdentityServerHost.csproj
+++ b/IdentityServer/v8/TokenExchange/IdentityServerHost/IdentityServerHost.csproj
@@ -7,6 +7,9 @@
-
+
+
+
+
diff --git a/IdentityServer/v8/TokenExchange/IdentityServerHost/Program.cs b/IdentityServer/v8/TokenExchange/IdentityServerHost/Program.cs
index b655fe29..53ad63eb 100644
--- a/IdentityServer/v8/TokenExchange/IdentityServerHost/Program.cs
+++ b/IdentityServer/v8/TokenExchange/IdentityServerHost/Program.cs
@@ -4,20 +4,12 @@
using IdentityServerHost;
using Microsoft.AspNetCore.DataProtection;
-using Serilog;
-using Serilog.Sinks.SystemConsole.Themes;
Console.Title = "IdentityServer";
-Log.Logger = new LoggerConfiguration()
- .MinimumLevel.Information()
- .Enrich.FromLogContext()
- .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code)
- .CreateLogger();
-
var builder = WebApplication.CreateBuilder(args);
-builder.Services.AddSerilog();
+builder.AddServiceDefaults();
var idsvrBuilder = builder.Services.AddIdentityServer()
.AddInMemoryApiScopes(Config.Scopes)
@@ -38,6 +30,7 @@
app.UseDeveloperExceptionPage();
+app.MapDefaultEndpoints();
app.UseIdentityServer();
app.Run();
diff --git a/IdentityServer/v8/TokenExchange/README.md b/IdentityServer/v8/TokenExchange/README.md
new file mode 100644
index 00000000..1094b9dc
--- /dev/null
+++ b/IdentityServer/v8/TokenExchange/README.md
@@ -0,0 +1,5 @@
+**Token Exchange Sample**
+
+ This sample requires multiple projects to be run at once. That can easily be done by running the included Aspire AppHost. The Aspire dashboard will show the status of all running applications and show you the links to the running applications. Aspire will also collect the Open Telemetry data (logs, metrics, traces) and make it available on the dashboard.
+For the included console application please look at the output of your IDE to see the results.
+
diff --git a/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/AppHost.cs b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/AppHost.cs
new file mode 100644
index 00000000..d6c5d32a
--- /dev/null
+++ b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/AppHost.cs
@@ -0,0 +1,7 @@
+var builder = DistributedApplication.CreateBuilder(args);
+
+var idsrv = builder.AddProject("identityserverhost");
+builder.AddProject("client")
+ .WaitFor(idsrv);
+
+builder.Build().Run();
diff --git a/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/Properties/launchSettings.json b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/Properties/launchSettings.json
new file mode 100644
index 00000000..af39238b
--- /dev/null
+++ b/IdentityServer/v8/TokenExchange/TokenExchange.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:17036;http://localhost:15277",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21012",
+ "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23192",
+ "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22249"
+ }
+ },
+ "http": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "applicationUrl": "http://localhost:15277",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19284",
+ "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18147",
+ "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20272"
+ }
+ }
+ }
+}
diff --git a/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/TokenExchange.AppHost.csproj b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/TokenExchange.AppHost.csproj
new file mode 100644
index 00000000..7c20cbd5
--- /dev/null
+++ b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/TokenExchange.AppHost.csproj
@@ -0,0 +1,16 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+ 7345a95a-3a14-4c9b-985a-1dac550f4368
+
+
+
+
+
+
+
+
diff --git a/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/appsettings.Development.json b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/appsettings.Development.json
new file mode 100644
index 00000000..0c208ae9
--- /dev/null
+++ b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/appsettings.json b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/appsettings.json
new file mode 100644
index 00000000..31c092aa
--- /dev/null
+++ b/IdentityServer/v8/TokenExchange/TokenExchange.AppHost/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning",
+ "Aspire.Hosting.Dcp": "Warning"
+ }
+ }
+}
diff --git a/IdentityServer/v8/TokenExchange/TokenExchange.sln b/IdentityServer/v8/TokenExchange/TokenExchange.sln
index 1964e44e..1a365c3d 100755
--- a/IdentityServer/v8/TokenExchange/TokenExchange.sln
+++ b/IdentityServer/v8/TokenExchange/TokenExchange.sln
@@ -7,6 +7,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServerHost", "Ident
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client", "Client\Client.csproj", "{93B5DD40-6D86-4E99-AA89-CBB41F70E40F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TokenExchange.AppHost", "TokenExchange.AppHost\TokenExchange.AppHost.csproj", "{E90D42B7-BC5B-498C-A667-70F90E8A03CC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.ServiceDefaults", "..\Aspire.ServiceDefaults\Aspire.ServiceDefaults.csproj", "{D312D120-217B-4BF2-ADA8-9AEC3BEED25C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -41,6 +45,30 @@ Global
{93B5DD40-6D86-4E99-AA89-CBB41F70E40F}.Release|x64.Build.0 = Release|Any CPU
{93B5DD40-6D86-4E99-AA89-CBB41F70E40F}.Release|x86.ActiveCfg = Release|Any CPU
{93B5DD40-6D86-4E99-AA89-CBB41F70E40F}.Release|x86.Build.0 = Release|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Debug|x64.Build.0 = Debug|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Debug|x86.Build.0 = Debug|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Release|x64.ActiveCfg = Release|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Release|x64.Build.0 = Release|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Release|x86.ActiveCfg = Release|Any CPU
+ {E90D42B7-BC5B-498C-A667-70F90E8A03CC}.Release|x86.Build.0 = Release|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Debug|x64.Build.0 = Debug|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Debug|x86.Build.0 = Debug|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Release|x64.ActiveCfg = Release|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Release|x64.Build.0 = Release|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Release|x86.ActiveCfg = Release|Any CPU
+ {D312D120-217B-4BF2-ADA8-9AEC3BEED25C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/samples.slnx b/samples.slnx
index 681437eb..04f07c28 100644
--- a/samples.slnx
+++ b/samples.slnx
@@ -295,6 +295,7 @@
+
@@ -498,6 +499,7 @@
+