From 79571638bc36c87d78af590b3013807acfaf5482 Mon Sep 17 00:00:00 2001 From: Norm Johanson Date: Tue, 27 Jan 2026 12:01:57 -0800 Subject: [PATCH 1/5] [LambdaTestTool] Add support for .NET 10 and removed support for .NET 6 --- .autover/autover.json | 4 +- .../30911c67-b2cc-4223-9477-ac0bab2fba8a.json | 12 ++ ...Amazon.Lambda.TestTool.BlazorTester.csproj | 25 +-- ...bda.TestTool.BlazorTester10_0-pack.csproj} | 12 +- .../App.razor | 59 +++++-- .../AppLegacy.razor | 11 ++ .../Constants.cs | 8 +- .../Controllers/RuntimeApiController.cs | 4 +- .../Pages/_Host.cshtml | 4 +- .../Routes.razor | 6 + .../Shared/MainLayout.razor | 8 +- .../Startup.cs | 146 ++++++++++++------ .../_Imports.razor | 4 +- .../Amazon.Lambda.TestTool.csproj | 26 ++-- .../Amazon.Lambda.TestTool/TestToolStartup.cs | 8 +- ....Lambda.TestTool.BlazorTester.Tests.csproj | 2 +- .../RuntimeApiControllerTests.cs | 8 +- .../Amazon.Lambda.TestTool.Tests.csproj | 2 +- .../Amazon.Lambda.TestTool.Tests/TestUtils.cs | 10 +- buildtools/build.proj | 3 +- 20 files changed, 247 insertions(+), 115 deletions(-) create mode 100644 .autover/changes/30911c67-b2cc-4223-9477-ac0bab2fba8a.json rename Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/{Amazon.Lambda.TestTool.BlazorTester60-pack.csproj => Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj} (71%) create mode 100644 Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/AppLegacy.razor create mode 100644 Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Routes.razor diff --git a/.autover/autover.json b/.autover/autover.json index d8932cfa1..8985c52bb 100644 --- a/.autover/autover.json +++ b/.autover/autover.json @@ -127,9 +127,9 @@ "Name": "Amazon.Lambda.TestTool.BlazorTester", "Paths": [ "Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj", - "Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester60-pack.csproj", "Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester80-pack.csproj", - "Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester90-pack.csproj" + "Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester90-pack.csproj", + "Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj" ] }, { diff --git a/.autover/changes/30911c67-b2cc-4223-9477-ac0bab2fba8a.json b/.autover/changes/30911c67-b2cc-4223-9477-ac0bab2fba8a.json new file mode 100644 index 000000000..773cf371a --- /dev/null +++ b/.autover/changes/30911c67-b2cc-4223-9477-ac0bab2fba8a.json @@ -0,0 +1,12 @@ +{ + "Projects": [ + { + "Name": "Amazon.Lambda.TestTool.BlazorTester", + "Type": "Minor", + "ChangelogMessages": [ + "Add support for .NET 10", + "Removed support for .NET 6" + ] + } + ] +} \ No newline at end of file diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj index 0e5548cbf..5ede10cb5 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj @@ -1,4 +1,4 @@ - + @@ -12,22 +12,25 @@ AWS;Amazon;Lambda 1701;1702;1591;1587;3021;NU5100;CS1591 true - net6.0;net8.0;net9.0 + net8.0;net9.0;net10.0 + - - - - - + - + + + + + - + @@ -36,4 +39,8 @@ + + + + diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester60-pack.csproj b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj similarity index 71% rename from Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester60-pack.csproj rename to Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj index 14be70b12..c6d23f97b 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester60-pack.csproj +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj @@ -4,25 +4,25 @@ Exe - A tool to help debug and test your .NET 6.0 AWS Lambda functions locally. + A tool to help debug and test your .NET 10.0 AWS Lambda functions locally. 0.16.3 AWS .NET Lambda Test Tool Apache 2 AWS;Amazon;Lambda - net6.0 - dotnet-lambda-test-tool-6.0 + net10.0 + dotnet-lambda-test-tool-10.0 true true - Amazon.Lambda.TestTool-6.0 + Amazon.Lambda.TestTool-10.0 Amazon.Lambda.TestTool.BlazorTester Amazon.Lambda.TestTool.BlazorTester true - false + - + diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/App.razor b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/App.razor index bf6c77378..ba72a9cc0 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/App.razor +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/App.razor @@ -1,11 +1,48 @@ - - - - - - - -

Sorry, there's nothing at this address.

-
-
-
+ + + + + + + + + + + + + + + + +
+
+
+

+ @Constants.PRODUCT_NAME has paused. This can happen for the following reasons. +

    +
  • The attached debugger is currently on a breakpoint. The test tool will resume when execution has continued in the debugger.
  • +
  • The debugger or test tool process has stopped. If so, this window can be closed.
  • +
+

+
+
+
+ + + + +
+ + An error has occurred. This application may no longer respond until reloaded. + + + An unhandled exception has occurred. See browser dev tools for details. + + Reload + 🗙 +
+ + + + + diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/AppLegacy.razor b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/AppLegacy.razor new file mode 100644 index 000000000..bf6c77378 --- /dev/null +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/AppLegacy.razor @@ -0,0 +1,11 @@ + + + + + + + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Constants.cs b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Constants.cs index 042ea07cf..7f17b2898 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Constants.cs +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Constants.cs @@ -5,12 +5,12 @@ public class Constants public const int DEFAULT_PORT = 5050; public const string DEFAULT_HOST = "localhost"; -#if NET6_0 - public const string PRODUCT_NAME = "AWS .NET 6.0 Mock Lambda Test Tool"; -#elif NET8_0 +#if NET8_0 public const string PRODUCT_NAME = "AWS .NET 8.0 Mock Lambda Test Tool"; #elif NET9_0 public const string PRODUCT_NAME = "AWS .NET 9.0 Mock Lambda Test Tool"; +#elif NET10_0 + public const string PRODUCT_NAME = "AWS .NET 10.0 Mock Lambda Test Tool"; #else Update for new target framework!!! #endif @@ -26,6 +26,6 @@ public class Constants public const string LINK_GITHUB_TEST_TOOL_INSTALL_AND_RUN = "https://github.com/aws/aws-lambda-dotnet/tree/master/Tools/LambdaTestTool#installing-and-running"; public const string LINK_DLQ_DEVELOEPR_GUIDE = "https://docs.aws.amazon.com/lambda/latest/dg/dlq.html"; public const string LINK_MSDN_ASSEMBLY_LOAD_CONTEXT = "https://docs.microsoft.com/en-us/dotnet/api/system.runtime.loader.assemblyloadcontext"; - public const string LINK_VS_TOOLKIT_MARKETPLACE = "https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.AWSToolkitforVisualStudio2017"; + public const string LINK_VS_TOOLKIT_MARKETPLACE = "https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.AWSToolkitforVisualStudio2022"; } } diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Controllers/RuntimeApiController.cs b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Controllers/RuntimeApiController.cs index 57ef5e3e9..9a8c407f1 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Controllers/RuntimeApiController.cs +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Controllers/RuntimeApiController.cs @@ -7,7 +7,6 @@ namespace Amazon.Lambda.TestTool.BlazorTester.Controllers { -#if NET6_0_OR_GREATER public class RuntimeApiController : ControllerBase { private const string HEADER_BREAK = "-----------------------------------"; @@ -101,5 +100,4 @@ internal class StatusResponse [System.Text.Json.Serialization.JsonPropertyName("status")] public string Status { get; set; } } -#endif -} \ No newline at end of file +} diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Pages/_Host.cshtml b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Pages/_Host.cshtml index 7c805172f..f4b4e098d 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Pages/_Host.cshtml +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Pages/_Host.cshtml @@ -1,4 +1,4 @@ -@page "/" +@page "/" @namespace Amazon.Lambda.TestTool.BlazorTester.Pages @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ @@ -34,7 +34,7 @@ - +
diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Routes.razor b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Routes.razor new file mode 100644 index 000000000..015a73469 --- /dev/null +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Routes.razor @@ -0,0 +1,6 @@ + + + + + + diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Shared/MainLayout.razor b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Shared/MainLayout.razor index 72e4119ff..8d37c81fa 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Shared/MainLayout.razor +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Shared/MainLayout.razor @@ -1,4 +1,4 @@ -@inherits LayoutComponentBase +@inherits LayoutComponentBase
- \ No newline at end of file + diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Startup.cs b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Startup.cs index 34e07a8aa..d29aa156c 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Startup.cs +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Startup.cs @@ -5,12 +5,15 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System; using System.Diagnostics; using System.IO; using System.Threading; using System.Threading.Tasks; +using System.Reflection; namespace Amazon.Lambda.TestTool.BlazorTester { @@ -18,10 +21,101 @@ public class Startup { public static void LaunchWebTester(LocalLambdaOptions lambdaOptions, bool openWindow) { +#if NET10_0_OR_GREATER var host = StartWebTesterAsync(lambdaOptions, openWindow).GetAwaiter().GetResult(); host.WaitForShutdown(); +#else + var host = StartWebTesterAsync(lambdaOptions, openWindow).GetAwaiter().GetResult(); + host.WaitForShutdown(); +#endif } +#if NET10_0_OR_GREATER + public static async Task StartWebTesterAsync(LocalLambdaOptions lambdaOptions, bool openWindow, CancellationToken token = default(CancellationToken)) + { + var host = string.IsNullOrEmpty(lambdaOptions.Host) + ? Constants.DEFAULT_HOST + : lambdaOptions.Host; + var port = lambdaOptions.Port ?? Constants.DEFAULT_PORT; + var url = $"http://{host}:{port}"; + + + var contentPath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; + if (!Directory.Exists(contentPath)) + { + contentPath = Path.GetFullPath(Directory.GetCurrentDirectory()); + } + + var builder = WebApplication.CreateBuilder(new WebApplicationOptions + { + ContentRootPath = contentPath, + }); + + // When running as a end user we won't the console to only have the specific logs Console.Write calls. + // and not be cluttered with framework logs. +#if !DEBUG + builder.Logging.ClearProviders(); +#endif + + builder.Services.AddRazorComponents() + .AddInteractiveServerComponents(); + + builder.Services.AddControllers() + .AddApplicationPart(typeof(Startup).Assembly); + + builder.Services.AddSingleton(lambdaOptions); + + builder.Services.AddSingleton(); + builder.Services.AddControllers(); + builder.Services.AddHttpContextAccessor(); + + builder.Services.AddBlazoredModal(); + + builder.WebHost + .SuppressStatusMessages(true) + .UseUrls(url); + + builder.Services.AddSignalR(options => + { + options.MaximumReceiveMessageSize = 1024 * 1024 * 6; + }); + + var app = builder.Build(); + + app.UseAntiforgery(); + app.UseDeveloperExceptionPage(); + + app.MapGet("/custom-health", () => "Healthy"); + + app.MapControllers(); + app.UseStaticFiles(); + app.MapRazorComponents() + .AddInteractiveServerRenderMode(); + + await app.StartAsync(token); + Console.WriteLine($"Environment running at {url}"); + + if (openWindow) + { + try + { + string launchUrl = Utils.DetermineLaunchUrl(host, port, Constants.DEFAULT_HOST); + var info = new ProcessStartInfo + { + UseShellExecute = true, + FileName = launchUrl + }; + Process.Start(info); + } + catch (Exception e) + { + Console.Error.WriteLine($"Error launching browser: {e.Message}"); + } + } + + return app; + } +#else public static async Task StartWebTesterAsync(LocalLambdaOptions lambdaOptions, bool openWindow, CancellationToken token = default(CancellationToken)) { var host = string.IsNullOrEmpty(lambdaOptions.Host) @@ -30,7 +124,12 @@ public static void LaunchWebTester(LocalLambdaOptions lambdaOptions, bool openWi var port = lambdaOptions.Port ?? Constants.DEFAULT_PORT; var url = $"http://{host}:{port}"; - var contentPath = Path.GetFullPath(Directory.GetCurrentDirectory()); + var contentPath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; + if (!Directory.Exists(contentPath)) + { + contentPath = Path.GetFullPath(Directory.GetCurrentDirectory()); + } + var builder = new WebHostBuilder() .UseKestrel() .SuppressStatusMessages(true) @@ -84,26 +183,6 @@ public void ConfigureServices(IServiceCollection services) services.AddHttpContextAccessor(); services.AddBlazoredModal(); - -#if NET8_0_OR_GREATER - // Starting with .NET 8 how the IFileProvider is configured for Blazor - // to serve the Blazor embedded content was changed. The previous version - // of using the PostConfigure no longer works because the "o.FileProvider" is null. - // Using this IPostConfigureOptions service approach does not - // work in .NET versions before .NET 8. - // For further context checkout this GitHub issue. - // https://github.com/dotnet/aspnetcore/issues/51794 - services.AddTransient, ConfigureStaticFilesOptions>(); -#else - services.AddOptions() - .PostConfigure(o => - { - var fileProvider = new ManifestEmbeddedFileProvider(typeof(Startup).Assembly, "wwwroot"); - - // Make sure we don't remove the existing file providers (blazor needs this) - o.FileProvider = new CompositeFileProvider(o.FileProvider, fileProvider); - }); -#endif } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. @@ -126,31 +205,6 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) endpoints.MapFallbackToPage("/_Host"); }); } - -#if NET8_0_OR_GREATER - internal class ConfigureStaticFilesOptions : IPostConfigureOptions - { - public ConfigureStaticFilesOptions(IWebHostEnvironment environment) - { - Environment = environment; - } - - public IWebHostEnvironment Environment { get; } - - public void PostConfigure(string name, StaticFileOptions options) - { - name = name ?? throw new ArgumentNullException(nameof(name)); - options = options ?? throw new ArgumentNullException(nameof(options)); - - if (name != Options.DefaultName) - { - return; - } - - var fileProvider = new ManifestEmbeddedFileProvider(typeof(Startup).Assembly, "wwwroot"); - Environment.WebRootFileProvider = fileProvider; - } - } #endif } } diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/_Imports.razor b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/_Imports.razor index c577d54c5..97d3c2c83 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/_Imports.razor +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/_Imports.razor @@ -1,4 +1,4 @@ -@using System.Net.Http +@using System.Net.Http @using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Components.Authorization @using Microsoft.AspNetCore.Components.Forms @@ -10,4 +10,4 @@ @using Blazored @using Blazored.Modal -@using Blazored.Modal.Services \ No newline at end of file +@using Blazored.Modal.Services diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/Amazon.Lambda.TestTool.csproj b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/Amazon.Lambda.TestTool.csproj index 1cd63232e..7467b5896 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/Amazon.Lambda.TestTool.csproj +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/Amazon.Lambda.TestTool.csproj @@ -3,7 +3,7 @@ - net6.0;net8.0;net9.0 + net8.0;net9.0;net10.0 Common code for the AWS .NET Core Lambda Mock Test Tool. 1701;1702;1591;1587;3021;NU5100;CS1591 @@ -19,32 +19,32 @@ - - - net6.0 - - + net8.0 net9.0 - + - - - + + net10.0 + - - + + - + + + + + diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/TestToolStartup.cs b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/TestToolStartup.cs index d110aeb5d..9693d64e4 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/TestToolStartup.cs +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/TestToolStartup.cs @@ -1,4 +1,4 @@ -using Amazon.Lambda.TestTool.Runtime; +using Amazon.Lambda.TestTool.Runtime; using Amazon.Lambda.TestTool.SampleRequests; using System; using System.Diagnostics; @@ -55,12 +55,12 @@ public static void Startup(string productName, Action var lambdaAssemblyDirectory = commandOptions.Path ?? Directory.GetCurrentDirectory(); -#if NET6_0 - var targetFramework = "net6.0"; -#elif NET8_0 +#if NET8_0 var targetFramework = "net8.0"; #elif NET9_0 var targetFramework = "net9.0"; +#elif NET10_0 + var targetFramework = "net10.0"; #endif // If running in the project directory select the build directory so the deps.json file can be found. diff --git a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.BlazorTester.Tests/Amazon.Lambda.TestTool.BlazorTester.Tests.csproj b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.BlazorTester.Tests/Amazon.Lambda.TestTool.BlazorTester.Tests.csproj index 6bbb530ad..c03cb8e7b 100644 --- a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.BlazorTester.Tests/Amazon.Lambda.TestTool.BlazorTester.Tests.csproj +++ b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.BlazorTester.Tests/Amazon.Lambda.TestTool.BlazorTester.Tests.csproj @@ -1,7 +1,7 @@ - net6.0;net8.0 + net8.0;net10.0 false diff --git a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.BlazorTester.Tests/RuntimeApiControllerTests.cs b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.BlazorTester.Tests/RuntimeApiControllerTests.cs index 473b9eecd..5404c1a45 100644 --- a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.BlazorTester.Tests/RuntimeApiControllerTests.cs +++ b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.BlazorTester.Tests/RuntimeApiControllerTests.cs @@ -1,4 +1,5 @@ -using Amazon.Lambda.TestTool.BlazorTester.Services; +using Amazon.Lambda.TestTool.BlazorTester.Services; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using System; @@ -125,7 +126,12 @@ public class TestSession : IDisposable private int Port { get; set; } +#if NET10_0_OR_GREATER + private WebApplication WebHost { get; set; } + +#else private IWebHost WebHost { get; set; } +#endif public HttpClient Client { get; private set; } diff --git a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests/Amazon.Lambda.TestTool.Tests.csproj b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests/Amazon.Lambda.TestTool.Tests.csproj index 9d51d2d4f..13eaa1e95 100644 --- a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests/Amazon.Lambda.TestTool.Tests.csproj +++ b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests/Amazon.Lambda.TestTool.Tests.csproj @@ -1,7 +1,7 @@  - net6.0;net8.0 + net8.0;net10.0 enable false diff --git a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests/TestUtils.cs b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests/TestUtils.cs index 23387ebf8..942a77017 100644 --- a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests/TestUtils.cs +++ b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests/TestUtils.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -80,13 +80,13 @@ public static string GetLambdaFunctionBuildPath(string projectName) public static string GetTargetFramework() { -#if NET6_0 - return "net6.0"; -#elif NET8_0 +#if NET8_0 return "net8.0"; +#elif NET10_0 + return "net10.0"; #else Compile error you need to add a new target framework #endif } } -} \ No newline at end of file +} diff --git a/buildtools/build.proj b/buildtools/build.proj index 3e3ad43a7..037c11f0a 100644 --- a/buildtools/build.proj +++ b/buildtools/build.proj @@ -169,9 +169,8 @@ - - + From 40b1e674335d4c1de7b9cdbdbe2857ccb94f889e Mon Sep 17 00:00:00 2001 From: Norm Johanson Date: Tue, 27 Jan 2026 12:20:20 -0800 Subject: [PATCH 2/5] Remove package references to Microsoft.Extensions.FileProviders.Embedded --- .../Amazon.Lambda.TestTool.BlazorTester.csproj | 14 -------------- ...on.Lambda.TestTool.BlazorTester10_0-pack.csproj | 1 - ...azon.Lambda.TestTool.BlazorTester80-pack.csproj | 1 - ...azon.Lambda.TestTool.BlazorTester90-pack.csproj | 1 - 4 files changed, 17 deletions(-) diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj index 5ede10cb5..b9d42eece 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester.csproj @@ -13,22 +13,8 @@ 1701;1702;1591;1587;3021;NU5100;CS1591 true net8.0;net9.0;net10.0 - - - - - - - - - - - - diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj index c6d23f97b..00239fbfa 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj @@ -22,7 +22,6 @@ - diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester80-pack.csproj b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester80-pack.csproj index 6287e7531..74d15f3a8 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester80-pack.csproj +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester80-pack.csproj @@ -22,7 +22,6 @@ - diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester90-pack.csproj b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester90-pack.csproj index 2fa27836b..5be55faaf 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester90-pack.csproj +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester90-pack.csproj @@ -22,7 +22,6 @@ - From c1cf547cd7750e11cbcf43af7fda57fcdfce2e92 Mon Sep 17 00:00:00 2001 From: Norm Johanson Date: Tue, 27 Jan 2026 17:20:07 -0800 Subject: [PATCH 3/5] Address PR comments --- .../Shared/MainLayout.razor | 3 ++- .../Amazon.Lambda.TestTool.BlazorTester/Startup.cs | 14 ++------------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Shared/MainLayout.razor b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Shared/MainLayout.razor index 8d37c81fa..dfdbabb03 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Shared/MainLayout.razor +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Shared/MainLayout.razor @@ -9,7 +9,8 @@ @Body
diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Startup.cs b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Startup.cs index d29aa156c..a8b5f714a 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Startup.cs +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Startup.cs @@ -2,12 +2,10 @@ using Blazored.Modal; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using System; using System.Diagnostics; using System.IO; @@ -21,13 +19,8 @@ public class Startup { public static void LaunchWebTester(LocalLambdaOptions lambdaOptions, bool openWindow) { -#if NET10_0_OR_GREATER - var host = StartWebTesterAsync(lambdaOptions, openWindow).GetAwaiter().GetResult(); - host.WaitForShutdown(); -#else var host = StartWebTesterAsync(lambdaOptions, openWindow).GetAwaiter().GetResult(); host.WaitForShutdown(); -#endif } #if NET10_0_OR_GREATER @@ -51,7 +44,7 @@ public static void LaunchWebTester(LocalLambdaOptions lambdaOptions, bool openWi ContentRootPath = contentPath, }); - // When running as a end user we won't the console to only have the specific logs Console.Write calls. + // When running as an end user, we want the console to show only logs from Console.Write calls // and not be cluttered with framework logs. #if !DEBUG builder.Logging.ClearProviders(); @@ -66,7 +59,6 @@ public static void LaunchWebTester(LocalLambdaOptions lambdaOptions, bool openWi builder.Services.AddSingleton(lambdaOptions); builder.Services.AddSingleton(); - builder.Services.AddControllers(); builder.Services.AddHttpContextAccessor(); builder.Services.AddBlazoredModal(); @@ -85,8 +77,6 @@ public static void LaunchWebTester(LocalLambdaOptions lambdaOptions, bool openWi app.UseAntiforgery(); app.UseDeveloperExceptionPage(); - app.MapGet("/custom-health", () => "Healthy"); - app.MapControllers(); app.UseStaticFiles(); app.MapRazorComponents() From 180067f1826c32d0c4b428fe1143af1db0a51245 Mon Sep 17 00:00:00 2001 From: Norm Johanson Date: Tue, 27 Jan 2026 17:37:31 -0800 Subject: [PATCH 4/5] Update sample Lambda projects to target .NET 10 --- .../AspNetCoreAPIExample/AspNetCoreAPIExample.csproj | 2 +- .../FunctionSignatureExamples/FunctionSignatureExamples.csproj | 2 +- .../tests/LambdaFunctions/IntegerFunc/IntegerFunc.csproj | 2 +- .../LambdaFunctions/S3EventFunction/S3EventFunction.csproj | 2 +- .../ServerlessFunctionTemplateYamlExample.csproj | 2 +- .../ServerlessTemplateExample/ServerlessTemplateExample.csproj | 2 +- .../ServerlessTemplateYamlExample.csproj | 2 +- .../SourceGeneratorExample/SourceGeneratorExample.csproj | 2 +- .../tests/LambdaFunctions/ToUpperFunc/ToUpperFunc.csproj | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/AspNetCoreAPIExample/AspNetCoreAPIExample.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/AspNetCoreAPIExample/AspNetCoreAPIExample.csproj index 985cf50bb..0cf8d4896 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/AspNetCoreAPIExample/AspNetCoreAPIExample.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/AspNetCoreAPIExample/AspNetCoreAPIExample.csproj @@ -1,6 +1,6 @@  - net6.0;net8.0 + net8.0;net10.0 true Lambda diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/FunctionSignatureExamples/FunctionSignatureExamples.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/FunctionSignatureExamples/FunctionSignatureExamples.csproj index 4fa118831..86ec9f192 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/FunctionSignatureExamples/FunctionSignatureExamples.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/FunctionSignatureExamples/FunctionSignatureExamples.csproj @@ -1,6 +1,6 @@  - net6.0;net8.0 + net8.0;net10.0 true diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/IntegerFunc/IntegerFunc.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/IntegerFunc/IntegerFunc.csproj index 81d660e5e..6b3730071 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/IntegerFunc/IntegerFunc.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/IntegerFunc/IntegerFunc.csproj @@ -1,7 +1,7 @@ - net6.0;net8.0 + net8.0;net10.0 true diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/S3EventFunction/S3EventFunction.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/S3EventFunction/S3EventFunction.csproj index 34457339f..6d489eb81 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/S3EventFunction/S3EventFunction.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/S3EventFunction/S3EventFunction.csproj @@ -1,7 +1,7 @@ - net6.0;net8.0 + net8.0;net10.0 true diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessFunctionTemplateYamlExample/ServerlessFunctionTemplateYamlExample.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessFunctionTemplateYamlExample/ServerlessFunctionTemplateYamlExample.csproj index f2c6b7c42..da7329501 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessFunctionTemplateYamlExample/ServerlessFunctionTemplateYamlExample.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessFunctionTemplateYamlExample/ServerlessFunctionTemplateYamlExample.csproj @@ -1,7 +1,7 @@ - net6.0;net8.0 + net8.0;net10.0 true Lambda diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessTemplateExample/ServerlessTemplateExample.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessTemplateExample/ServerlessTemplateExample.csproj index dc09c2fa1..2b600ad01 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessTemplateExample/ServerlessTemplateExample.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessTemplateExample/ServerlessTemplateExample.csproj @@ -1,7 +1,7 @@ - net6.0;net8.0 + net8.0;net10.0 true diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessTemplateYamlExample/ServerlessTemplateYamlExample.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessTemplateYamlExample/ServerlessTemplateYamlExample.csproj index f1ea47c5b..51b2f2148 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessTemplateYamlExample/ServerlessTemplateYamlExample.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/ServerlessTemplateYamlExample/ServerlessTemplateYamlExample.csproj @@ -1,7 +1,7 @@ - net6.0;net8.0 + net8.0;net10.0 true diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/SourceGeneratorExample/SourceGeneratorExample.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/SourceGeneratorExample/SourceGeneratorExample.csproj index 712293c78..8281fa0c7 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/SourceGeneratorExample/SourceGeneratorExample.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/SourceGeneratorExample/SourceGeneratorExample.csproj @@ -1,6 +1,6 @@ - net6.0;net8.0 + net8.0;net10.0 enable true Lambda diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/ToUpperFunc/ToUpperFunc.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/ToUpperFunc/ToUpperFunc.csproj index 81d660e5e..6b3730071 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/ToUpperFunc/ToUpperFunc.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/ToUpperFunc/ToUpperFunc.csproj @@ -1,7 +1,7 @@ - net6.0;net8.0 + net8.0;net10.0 true From 7c09238c3b6ace5192e974b51c26f34159b001a3 Mon Sep 17 00:00:00 2001 From: Norm Johanson Date: Wed, 28 Jan 2026 09:16:04 -0800 Subject: [PATCH 5/5] Address PR comments --- .../Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj index 00239fbfa..840c8b753 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool.BlazorTester/Amazon.Lambda.TestTool.BlazorTester10_0-pack.csproj @@ -17,7 +17,6 @@ Amazon.Lambda.TestTool.BlazorTester Amazon.Lambda.TestTool.BlazorTester true -