diff --git a/.azure/pipelines/ci-public.yml b/.azure/pipelines/ci-public.yml index 7cf5ea808e5a..c63e4dee91e4 100644 --- a/.azure/pipelines/ci-public.yml +++ b/.azure/pipelines/ci-public.yml @@ -638,7 +638,7 @@ stages: timeoutInMinutes: 240 steps: - script: git submodule update --init - displayName: Update submodules + displayName: Update submodules ci-public - script: ./restore.cmd displayName: Run restore.cmd - powershell: ./eng/build.ps1 -all -noBuildJava -noBuildNodeJS "-WarnAsError:false" diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index ab0d36e1bedf..89de3a8016d6 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -690,7 +690,7 @@ extends: timeoutInMinutes: 240 steps: - script: git submodule update --init - displayName: Update submodules + displayName: Update submodules ci - script: ./restore.cmd displayName: Run restore.cmd - script: ./eng/build.cmd -all -noBuildJava -noBuildNodeJS @@ -708,6 +708,19 @@ extends: -NoBuildDeps -configuration Release displayName: Run project template tests + - script: | + echo "Available templates:" + dotnet new list + echo "" + echo "Template package locations:" + dotnet new search --columns-all | findstr /i "template" + echo "" + echo "Template cache location:" + echo %USERPROFILE%\.templateengine + if exist "%USERPROFILE%\.templateengine" ( + dir "%USERPROFILE%\.templateengine" /s /b + ) + displayName: Check available templates and locations - powershell: . ./activate.ps1; ./src/ProjectTemplates/scripts/Run-BlazorWeb-Locally.ps1 -Verbose displayName: Run Blazor web app test script diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsNoInteractivityStartup.cs b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsNoInteractivityStartup.cs index 92fe46b53a3a..65adb091bbfd 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsNoInteractivityStartup.cs +++ b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsNoInteractivityStartup.cs @@ -64,7 +64,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseExceptionHandler("/Error", createScopeForErrors: true); } - reexecutionApp.UseStatusCodePagesWithReExecute("/not-found-reexecute", createScopeForErrors: true); + reexecutionApp.UseStatusCodePagesWithReExecute("/not-found-reexecute", createScopeForStatusCodePages: true); reexecutionApp.UseStaticFiles(); reexecutionApp.UseRouting(); RazorComponentEndpointsStartup.UseFakeAuthState(reexecutionApp); diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs index 6ff528a5a0eb..7a8e554d424a 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs +++ b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs @@ -103,7 +103,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) await context.Response.WriteAsync("Triggered a 404 status code."); }); }); - reexecutionApp.UseStatusCodePagesWithReExecute("/not-found-reexecute", createScopeForErrors: true); + reexecutionApp.UseStatusCodePagesWithReExecute("/not-found-reexecute", createScopeForStatusCodePages: true); reexecutionApp.UseRouting(); reexecutionApp.UseAntiforgery(); diff --git a/src/Middleware/Diagnostics/src/PublicAPI.Unshipped.txt b/src/Middleware/Diagnostics/src/PublicAPI.Unshipped.txt index 158b0cf33ead..c18db3d5eee7 100644 --- a/src/Middleware/Diagnostics/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/Diagnostics/src/PublicAPI.Unshipped.txt @@ -1,8 +1,8 @@ #nullable enable Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.SuppressDiagnosticsCallback.get -> System.Func? Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.SuppressDiagnosticsCallback.set -> void -Microsoft.AspNetCore.Builder.StatusCodePagesOptions.CreateScopeForErrors.get -> bool -Microsoft.AspNetCore.Builder.StatusCodePagesOptions.CreateScopeForErrors.set -> void +Microsoft.AspNetCore.Builder.StatusCodePagesOptions.CreateScopeForStatusCodePages.get -> bool +Microsoft.AspNetCore.Builder.StatusCodePagesOptions.CreateScopeForStatusCodePages.set -> void Microsoft.AspNetCore.Diagnostics.ExceptionHandledType Microsoft.AspNetCore.Diagnostics.ExceptionHandledType.ExceptionHandlerDelegate = 3 -> Microsoft.AspNetCore.Diagnostics.ExceptionHandledType Microsoft.AspNetCore.Diagnostics.ExceptionHandledType.ExceptionHandlerService = 1 -> Microsoft.AspNetCore.Diagnostics.ExceptionHandledType @@ -17,4 +17,6 @@ Microsoft.AspNetCore.Diagnostics.ExceptionHandlerSuppressDiagnosticsContext.Exce Microsoft.AspNetCore.Diagnostics.ExceptionHandlerSuppressDiagnosticsContext.ExceptionHandlerSuppressDiagnosticsContext() -> void Microsoft.AspNetCore.Diagnostics.ExceptionHandlerSuppressDiagnosticsContext.HttpContext.get -> Microsoft.AspNetCore.Http.HttpContext! Microsoft.AspNetCore.Diagnostics.ExceptionHandlerSuppressDiagnosticsContext.HttpContext.init -> void -static Microsoft.AspNetCore.Builder.StatusCodePagesExtensions.UseStatusCodePagesWithReExecute(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! pathFormat, bool createScopeForErrors, string? queryFormat = null) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.Builder.StatusCodePagesExtensions.UseStatusCodePagesWithReExecute(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! pathFormat, string? queryFormat = null, bool createScopeForStatusCodePages = false) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +*REMOVED*static Microsoft.AspNetCore.Builder.StatusCodePagesExtensions.UseStatusCodePagesWithReExecute(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! pathFormat, string? queryFormat = null) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.Builder.StatusCodePagesExtensions.UseStatusCodePagesWithReExecute(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! pathFormat, string! queryFormat) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! \ No newline at end of file diff --git a/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesExtensions.cs b/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesExtensions.cs index 952753c69830..b6d760efcdd4 100644 --- a/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesExtensions.cs +++ b/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesExtensions.cs @@ -144,7 +144,7 @@ public static IApplicationBuilder UseStatusCodePages(this IApplicationBuilder ap public static IApplicationBuilder UseStatusCodePagesWithReExecute( this IApplicationBuilder app, string pathFormat, - string? queryFormat = null) + string queryFormat) { ArgumentNullException.ThrowIfNull(app); @@ -168,15 +168,15 @@ public static IApplicationBuilder UseStatusCodePagesWithReExecute( /// /// /// - /// Whether or not to create a new scope. /// + /// Whether or not to create a new scope. /// [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IApplicationBuilder UseStatusCodePagesWithReExecute( this IApplicationBuilder app, string pathFormat, - bool createScopeForErrors, - string? queryFormat = null) + string? queryFormat = null, + bool createScopeForStatusCodePages = false) { ArgumentNullException.ThrowIfNull(app); @@ -190,7 +190,7 @@ public static IApplicationBuilder UseStatusCodePagesWithReExecute( Options.Create(new StatusCodePagesOptions() { HandleAsync = CreateHandler(pathFormat, queryFormat, newNext), - CreateScopeForErrors = createScopeForErrors, + CreateScopeForStatusCodePages = createScopeForStatusCodePages, PathFormat = pathFormat })).Invoke; }); @@ -199,7 +199,7 @@ public static IApplicationBuilder UseStatusCodePagesWithReExecute( var options = new StatusCodePagesOptions { HandleAsync = CreateHandler(pathFormat, queryFormat), - CreateScopeForErrors = createScopeForErrors, + CreateScopeForStatusCodePages = createScopeForStatusCodePages, PathFormat = pathFormat }; var wrappedOptions = new OptionsWrapper(options); @@ -222,8 +222,8 @@ private static Func CreateHandler(string pathFormat, st var originalQueryString = context.HttpContext.Request.QueryString; var routeValuesFeature = context.HttpContext.Features.Get(); - var oldScope = context.Options.CreateScopeForErrors ? context.HttpContext.RequestServices : null; - await using AsyncServiceScope? scope = context.Options.CreateScopeForErrors + var oldScope = context.Options.CreateScopeForStatusCodePages ? context.HttpContext.RequestServices : null; + await using AsyncServiceScope? scope = context.Options.CreateScopeForStatusCodePages ? context.HttpContext.RequestServices.GetRequiredService().CreateAsyncScope() : null; diff --git a/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesOptions.cs b/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesOptions.cs index 95ff38eed8d5..9e91cbdef915 100644 --- a/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesOptions.cs +++ b/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesOptions.cs @@ -61,7 +61,7 @@ private static string BuildResponseBody(int httpStatusCode) /// replace it on when re-executing the request. /// /// The default value is . - public bool CreateScopeForErrors { get; set; } + public bool CreateScopeForStatusCodePages { get; set; } internal string? PathFormat { get; set; } } diff --git a/src/ProjectTemplates/scripts/Run-BlazorWeb-Locally.ps1 b/src/ProjectTemplates/scripts/Run-BlazorWeb-Locally.ps1 index fe5b35826f06..96919e3e60a7 100644 --- a/src/ProjectTemplates/scripts/Run-BlazorWeb-Locally.ps1 +++ b/src/ProjectTemplates/scripts/Run-BlazorWeb-Locally.ps1 @@ -78,7 +78,7 @@ $templateArguments += "--use-program-main" } - Import-Module -Name "$PSScriptRoot/Test-Template.psm1"; + Import-Module -Name "$PSScriptRoot/Test-Template.psm1" -Force; Test-Template ` -TemplateName "MyBlazorApp" ` diff --git a/src/ProjectTemplates/scripts/Test-Template.psm1 b/src/ProjectTemplates/scripts/Test-Template.psm1 index 9f63b5201cae..8f08a3d48342 100644 --- a/src/ProjectTemplates/scripts/Test-Template.psm1 +++ b/src/ProjectTemplates/scripts/Test-Template.psm1 @@ -36,6 +36,10 @@ function Test-Template { $env:DOTNET_ROOT = "$PSScriptRoot/.dotnet"; $env:DOTNET_ROOT_X86 = "$PSScriptRoot/.dotnet"; $env:Path = "$PSScriptRoot/.dotnet;$env:Path"; + Write-Verbose "PATH: $env:Path"; + Write-Verbose "DOTNET_ROOT: $env:DOTNET_ROOT"; + Write-Verbose "Running dotnet --info"; + dotnet --info; $tmpDir = "$PSScriptRoot/$templateName"; Remove-Item -Path $tmpDir -Recurse -ErrorAction Ignore; Push-Location ..; @@ -50,11 +54,12 @@ function Test-Template { $PackageName = (Get-Item $PackagePath).Name; - if (-not (Test-Path "$($env:USERPROFILE)/.templateengine/packages/$PackageName")) { - Write-Verbose "Installing package from $PackagePath"; - dotnet new install $PackagePath; - } - else { + # if (-not (Test-Path "$($env:USERPROFILE)/.templateengine/packages/$PackageName")) { + # Write-Verbose "Installing package from $PackagePath"; + # dotnet new install $PackagePath; + # } + # else { + # always try to uninstall first Write-Verbose "Uninstalling package from $PackagePath"; if (-not ($PackageName -match $PackagePattern)) { Write-Error "$PackageName did not match $PackagePattern"; @@ -66,7 +71,7 @@ function Test-Template { Write-Verbose "Installing package from $PackagePath"; dotnet new install $PackagePath; - } + # } Write-Verbose "Creating directory $tmpDir"