From 4bcc04fb7e5daf07a282c7ce196be7f58bcfeea3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 12 Aug 2022 19:12:59 +0000 Subject: [PATCH 01/37] Update dependencies from https://github.com/dotnet/arcade build 20220811.3 (#43242) [release/6.0] Update dependencies from dotnet/arcade --- NuGet.config | 4 - eng/Version.Details.xml | 16 +- eng/Versions.props | 4 +- eng/common/generate-sbom-prep.ps1 | 2 + eng/common/generate-sbom-prep.sh | 12 ++ eng/common/init-tools-native.ps1 | 144 ++++++++++++------ eng/common/internal/NuGet.config | 7 + eng/common/internal/Tools.csproj | 3 + eng/common/templates/job/execute-sdl.yml | 2 +- eng/common/templates/job/onelocbuild.yml | 2 +- eng/common/templates/jobs/jobs.yml | 2 +- .../templates/post-build/post-build.yml | 8 +- eng/common/tools.ps1 | 4 + global.json | 4 +- 14 files changed, 145 insertions(+), 69 deletions(-) create mode 100644 eng/common/internal/NuGet.config diff --git a/NuGet.config b/NuGet.config index 0057e5ff395f..4b821f800992 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,8 @@ - - @@ -27,10 +25,8 @@ - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2036ca3cb2d8..f371c3d6ff9b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -280,22 +280,22 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime f316191dbb5782d76ceb457018dcd80ff8ce8692 - + https://github.com/dotnet/arcade - fdd3a242bc813f371023adff4e4c05c0be705d2a + 778552f02f31d50ec1c3c18a872cc482d04aec75 - + https://github.com/dotnet/arcade - fdd3a242bc813f371023adff4e4c05c0be705d2a + 778552f02f31d50ec1c3c18a872cc482d04aec75 - + https://github.com/dotnet/arcade - fdd3a242bc813f371023adff4e4c05c0be705d2a + 778552f02f31d50ec1c3c18a872cc482d04aec75 - + https://github.com/dotnet/arcade - fdd3a242bc813f371023adff4e4c05c0be705d2a + 778552f02f31d50ec1c3c18a872cc482d04aec75 diff --git a/eng/Versions.props b/eng/Versions.props index 6096db293484..13d9926b021e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -131,8 +131,8 @@ 6.0.8 6.0.8 - 6.0.0-beta.22314.7 - 6.0.0-beta.22314.7 + 6.0.0-beta.22411.3 + 6.0.0-beta.22411.3 + + + diff --git a/eng/common/templates/job/execute-sdl.yml b/eng/common/templates/job/execute-sdl.yml index 24cec0424e5d..9ff6a10a682c 100644 --- a/eng/common/templates/job/execute-sdl.yml +++ b/eng/common/templates/job/execute-sdl.yml @@ -54,7 +54,7 @@ jobs: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - checkout: self clean: true diff --git a/eng/common/templates/job/onelocbuild.yml b/eng/common/templates/job/onelocbuild.yml index 9d1e3042d8a6..991ae05f5dbe 100644 --- a/eng/common/templates/job/onelocbuild.yml +++ b/eng/common/templates/job/onelocbuild.yml @@ -41,7 +41,7 @@ jobs: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 variables: - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml index 554e71cfc436..48918df740b9 100644 --- a/eng/common/templates/jobs/jobs.yml +++ b/eng/common/templates/jobs/jobs.yml @@ -90,7 +90,7 @@ jobs: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 runAsPublic: ${{ parameters.runAsPublic }} publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 24e92a275a4f..270607126811 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -101,7 +101,7 @@ stages: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml @@ -138,7 +138,7 @@ stages: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml parameters: @@ -198,7 +198,7 @@ stages: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml parameters: @@ -255,7 +255,7 @@ stages: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml parameters: diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index f1e1cb53953b..81d7b0355e38 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -635,6 +635,10 @@ function InitializeNativeTools() { InstallDirectory = "$ToolsDir" } } + if ($env:NativeToolsOnMachine) { + Write-Host "Variable NativeToolsOnMachine detected, enabling native tool path promotion..." + $nativeArgs += @{ PathPromotion = $true } + } & "$PSScriptRoot/init-tools-native.ps1" @nativeArgs } } diff --git a/global.json b/global.json index fe757ec1255f..8bea37b6c288 100644 --- a/global.json +++ b/global.json @@ -29,7 +29,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.10", - "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.22314.7", - "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.22314.7" + "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.22411.3", + "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.22411.3" } } From a5d5f16723267a27767843c0d60d695d0792a0eb Mon Sep 17 00:00:00 2001 From: Aditya Mandaleeka Date: Fri, 12 Aug 2022 14:03:24 -0700 Subject: [PATCH 02/37] [6.0] Skip empty lines between requests (#43229) * [6.0] Skip empty lines between requests. * Add test case. --- .../Core/src/Internal/Http/Http1Connection.cs | 9 + .../Core/src/Internal/Http/HttpParser.cs | 8 - .../Kestrel/Core/test/StartLineTests.cs | 49 ----- .../BadHttpRequestTests.cs | 187 +++++++++++++++++- 4 files changed, 195 insertions(+), 58 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/Http1Connection.cs b/src/Servers/Kestrel/Core/src/Internal/Http/Http1Connection.cs index ccf85081f344..ad1ffff50e52 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/Http1Connection.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/Http1Connection.cs @@ -16,6 +16,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { internal partial class Http1Connection : HttpProtocol, IRequestProcessor, IHttpOutputAborter { + private const byte ByteCR = (byte)'\r'; + private const byte ByteLF = (byte)'\n'; private const byte ByteAsterisk = (byte)'*'; private const byte ByteForwardSlash = (byte)'/'; private const string Asterisk = "*"; @@ -146,6 +148,13 @@ public bool ParseRequest(ref SequenceReader reader) switch (_requestProcessingStatus) { case RequestProcessingStatus.RequestPending: + // Skip any empty lines (\r or \n) between requests. + // Peek first as a minor performance optimization; it's a quick inlined check. + if (reader.TryPeek(out byte b) && (b == ByteCR || b == ByteLF)) + { + reader.AdvancePastAny(ByteCR, ByteLF); + } + if (reader.End) { break; diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs b/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs index 7cce863b4d52..40df4e8fa615 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs @@ -52,14 +52,6 @@ private static bool CheckAllowSpaceAfterRequestLine() public bool ParseRequestLine(TRequestHandler handler, ref SequenceReader reader) { - // Skip any leading \r or \n on the request line. This is not technically allowed, - // but apparently there are enough clients relying on this that it's worth allowing. - // Peek first as a minor performance optimization; it's a quick inlined check. - if (reader.TryPeek(out byte b) && (b == ByteCR || b == ByteLF)) - { - reader.AdvancePastAny(ByteCR, ByteLF); - } - if (reader.TryReadTo(out ReadOnlySpan requestLine, ByteLF, advancePastDelimiter: true)) { if (_allowSpaceAfterRequestLine) diff --git a/src/Servers/Kestrel/Core/test/StartLineTests.cs b/src/Servers/Kestrel/Core/test/StartLineTests.cs index 59fdf6dd0cc1..a3bf1d7756fa 100644 --- a/src/Servers/Kestrel/Core/test/StartLineTests.cs +++ b/src/Servers/Kestrel/Core/test/StartLineTests.cs @@ -517,55 +517,6 @@ public void AuthorityForms(string rawTarget, string path, string query) DifferentFormsWorkTogether(); } - public static IEnumerable GetCrLfAndMethodCombinations() - { - // HTTP methods to test - var methods = new string[] { - HttpMethods.Connect, - HttpMethods.Delete, - HttpMethods.Get, - HttpMethods.Head, - HttpMethods.Options, - HttpMethods.Patch, - HttpMethods.Post, - HttpMethods.Put, - HttpMethods.Trace - }; - - // Prefixes to test - var crLfPrefixes = new string[] { - "\r", - "\n", - "\r\r\r\r\r", - "\r\n", - "\n\r" - }; - - foreach (var method in methods) - { - foreach (var prefix in crLfPrefixes) - { - yield return new object[] { prefix, method }; - } - } - } - - [Theory] - [MemberData(nameof(GetCrLfAndMethodCombinations))] - public void LeadingCrLfAreAllowed(string startOfRequestLine, string httpMethod) - { - var rawTarget = "http://localhost/path1?q=123&w=xyzw"; - Http1Connection.Reset(); - // RawTarget, Path, QueryString are null after reset - Assert.Null(Http1Connection.RawTarget); - Assert.Null(Http1Connection.Path); - Assert.Null(Http1Connection.QueryString); - - var ros = new ReadOnlySequence(Encoding.ASCII.GetBytes($"{startOfRequestLine}{httpMethod} {rawTarget} HTTP/1.1\r\n")); - var reader = new SequenceReader(ros); - Assert.True(Parser.ParseRequestLine(ParsingHandler, ref reader)); - } - public StartLineTests() { MemoryPool = PinnedBlockMemoryPoolFactory.Create(); diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/BadHttpRequestTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/BadHttpRequestTests.cs index 6d4820bbfc78..3df6cf9fac08 100644 --- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/BadHttpRequestTests.cs +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/BadHttpRequestTests.cs @@ -7,10 +7,10 @@ using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure; using Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests.TestTransport; using Microsoft.AspNetCore.Testing; +using Microsoft.AspNetCore.WebUtilities; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Primitives; using Moq; -using Xunit; using BadHttpRequestException = Microsoft.AspNetCore.Http.BadHttpRequestException; namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests @@ -323,6 +323,191 @@ private async Task TestBadRequest(string request, string expectedResponseStatusC Assert.Contains(expectedExceptionMessage, exceptionString); } + [Theory] + [InlineData("\r")] + [InlineData("\n")] + [InlineData("\r\n")] + [InlineData("\n\r")] + [InlineData("\r\n\r\n")] + [InlineData("\r\r\r\r\r")] + public async Task ExtraLinesBetweenRequestsIgnored(string extraLines) + { + BadHttpRequestException loggedException = null; + + TestSink.MessageLogged += context => + { + if (context.EventId.Name == "ConnectionBadRequest" && context.Exception is BadHttpRequestException ex) + { + loggedException = ex; + } + }; + + // Set up a listener to catch the BadRequest event + var diagListener = new DiagnosticListener("NotBadRequestTestsDiagListener"); + var badRequestEventListener = new BadRequestEventListener(diagListener, (pair) => { }); + + await using (var server = new TestServer(context => context.Request.Body.DrainAsync(default), new TestServiceContext(LoggerFactory) { DiagnosticSource = diagListener })) + { + using (var connection = server.CreateConnection()) + { + await connection.SendAll( + "POST / HTTP/1.1", + "Host:", + "Content-Length: 5", + "", + "funny", + extraLines); + + await connection.Receive( + "HTTP/1.1 200 OK", + "Content-Length: 0", + $"Date: {server.Context.DateHeaderValue}", + "", + ""); + + await connection.SendAll( + "POST / HTTP/1.1", + "Host:", + "Content-Length: 5", + "", + "funny"); + + await connection.Receive( + "HTTP/1.1 200 OK", + "Content-Length: 0", + $"Date: {server.Context.DateHeaderValue}", + "", + ""); + + connection.ShutdownSend(); + + await connection.ReceiveEnd(); + } + } + + Assert.Null(loggedException); + // Verify DiagnosticSource event for bad request + Assert.False(badRequestEventListener.EventFired); + } + + [Fact] + public async Task ExtraLinesIgnoredBetweenAdjacentRequests() + { + BadHttpRequestException loggedException = null; + + TestSink.MessageLogged += context => + { + if (context.EventId.Name == "ConnectionBadRequest" && context.Exception is BadHttpRequestException ex) + { + loggedException = ex; + } + }; + + // Set up a listener to catch the BadRequest event + var diagListener = new DiagnosticListener("NotBadRequestTestsDiagListener"); + var badRequestEventListener = new BadRequestEventListener(diagListener, (pair) => { }); + + await using (var server = new TestServer(context => context.Request.Body.DrainAsync(default), new TestServiceContext(LoggerFactory) { DiagnosticSource = diagListener })) + { + using (var connection = server.CreateConnection()) + { + await connection.SendAll( + "POST / HTTP/1.1", + "Host:", + "Content-Length: 5", + "", + "funny", + "", + "", + "", + "POST /"); // Split the request line + + await connection.Receive( + "HTTP/1.1 200 OK", + "Content-Length: 0", + $"Date: {server.Context.DateHeaderValue}", + "", + ""); + + await connection.SendAll( + " HTTP/1.1", + "Host:", + "Content-Length: 5", + "", + "funny"); + + await connection.Receive( + "HTTP/1.1 200 OK", + "Content-Length: 0", + $"Date: {server.Context.DateHeaderValue}", + "", + ""); + + connection.ShutdownSend(); + + await connection.ReceiveEnd(); + } + } + + Assert.Null(loggedException); + // Verify DiagnosticSource event for bad request + Assert.False(badRequestEventListener.EventFired); + } + + [Theory] + [InlineData("\r")] + [InlineData("\n")] + [InlineData("\r\n")] + [InlineData("\n\r")] + [InlineData("\n\n")] + [InlineData("\r\n\r\n")] + [InlineData("\r\r\r\r\r")] + public async Task ExtraLinesAtEndOfConnectionIgnored(string extraLines) + { + BadHttpRequestException loggedException = null; + + TestSink.MessageLogged += context => + { + if (context.EventId.Name == "ConnectionBadRequest" && context.Exception is BadHttpRequestException ex) + { + loggedException = ex; + } + }; + + // Set up a listener to catch the BadRequest event + var diagListener = new DiagnosticListener("NotBadRequestTestsDiagListener"); + var badRequestEventListener = new BadRequestEventListener(diagListener, (pair) => { }); + + await using (var server = new TestServer(context => context.Request.Body.DrainAsync(default), new TestServiceContext(LoggerFactory) { DiagnosticSource = diagListener })) + { + using (var connection = server.CreateConnection()) + { + await connection.SendAll( + "POST / HTTP/1.1", + "Host:", + "Content-Length: 5", + "", + "funny", + extraLines); + + await connection.Receive( + "HTTP/1.1 200 OK", + "Content-Length: 0", + $"Date: {server.Context.DateHeaderValue}", + "", + ""); + + connection.ShutdownSend(); + + await connection.ReceiveEnd(); + } + } + + Assert.Null(loggedException); + // Verify DiagnosticSource event for bad request + Assert.False(badRequestEventListener.EventFired); + } + private async Task ReceiveBadRequestResponse(InMemoryConnection connection, string expectedResponseStatusCode, string expectedDateHeaderValue, string expectedAllowHeader = null) { var lines = new[] From 9ac46165aa66079292ef32b2fbfebfb8717fd6e1 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 18:33:45 +0000 Subject: [PATCH 03/37] Update dependencies from https://github.com/dotnet/arcade build 20220812.2 (#43299) Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Helix.Sdk From Version 6.0.0-beta.22411.3 -> To Version 6.0.0-beta.22412.2 Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 4 ++-- global.json | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f371c3d6ff9b..66caf8e475d2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -280,22 +280,22 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime f316191dbb5782d76ceb457018dcd80ff8ce8692 - + https://github.com/dotnet/arcade - 778552f02f31d50ec1c3c18a872cc482d04aec75 + 41323ecb0b2312980381bfdbb75afd2dae2b266b - + https://github.com/dotnet/arcade - 778552f02f31d50ec1c3c18a872cc482d04aec75 + 41323ecb0b2312980381bfdbb75afd2dae2b266b - + https://github.com/dotnet/arcade - 778552f02f31d50ec1c3c18a872cc482d04aec75 + 41323ecb0b2312980381bfdbb75afd2dae2b266b - + https://github.com/dotnet/arcade - 778552f02f31d50ec1c3c18a872cc482d04aec75 + 41323ecb0b2312980381bfdbb75afd2dae2b266b diff --git a/eng/Versions.props b/eng/Versions.props index 13d9926b021e..a321496f4d25 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -131,8 +131,8 @@ 6.0.8 6.0.8 - 6.0.0-beta.22411.3 - 6.0.0-beta.22411.3 + 6.0.0-beta.22412.2 + 6.0.0-beta.22412.2 - + + + @@ -27,10 +29,12 @@ + + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bf05f45e33d6..60bab77d60ef 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -131,7 +131,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 https://github.com/dotnet/runtime @@ -235,7 +235,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 163a63591cf9e9b682063cf3995948c2b885a042 + 5e2d96cd9b05142c3cccc4092d6f69744a538668 diff --git a/eng/Versions.props b/eng/Versions.props index bc3e57278226..65356d76e5cb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.9 6.0.9 6.0.9 - 6.0.9-servicing.22419.5 + 6.0.9-servicing.22451.7 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.9-servicing.22419.5 + 6.0.9-servicing.22451.7 6.0.0 6.0.0 6.0.1 From 91eadbbb70c4404c196f8830c47c0d5cd0702ca2 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 6 Sep 2022 14:16:57 -0700 Subject: [PATCH 05/37] Update branding to 6.0.10 (#43777) * Update branding to 6.0.10 * Update public pool names Co-authored-by: Alex Perovich --- .azure/pipelines/jobs/default-build.yml | 4 ++-- eng/Versions.props | 4 ++-- eng/common/templates/job/source-build.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 2908d5bb869a..b81b7a8ba1b6 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -100,14 +100,14 @@ jobs: vmImage: ubuntu-18.04 ${{ if or(eq(parameters.useHostedUbuntu, false), and(eq(variables['System.TeamProject'], 'internal'), notin(variables['Build.Reason'], 'Manual', 'PullRequest', 'Schedule'))) }}: ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: NetCore1ESPool-Svc-Public + name: NetCore-Svc-Public demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: NetCore1ESPool-Svc-Internal demands: ImageOverride -equals Build.Ubuntu.1804.Amd64 ${{ if eq(parameters.agentOs, 'Windows') }}: ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: NetCore1ESPool-Svc-Public + name: NetCore-Svc-Public demands: ImageOverride -equals 1es-windows-2019-open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: NetCore1ESPool-Svc-Internal diff --git a/eng/Versions.props b/eng/Versions.props index a321496f4d25..7a7434cce6f7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,8 +8,8 @@ 6 0 - 9 - true + 10 + false diff --git a/eng/common/templates/job/source-build.yml b/eng/common/templates/job/source-build.yml index 5cd5325d7b4e..88f6f75a622d 100644 --- a/eng/common/templates/job/source-build.yml +++ b/eng/common/templates/job/source-build.yml @@ -46,7 +46,7 @@ jobs: # source-build builds run in Docker, including the default managed platform. pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: NetCore1ESPool-Public + name: NetCore-Public demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: NetCore1ESPool-Internal From 31eff6ee6f2c903a2407074dc68bb725e9d913a6 Mon Sep 17 00:00:00 2001 From: William Godbe Date: Tue, 6 Sep 2022 14:26:18 -0700 Subject: [PATCH 06/37] Remove Windows.10.Amd64.Server20H2.Open (#43554) --- eng/targets/Helix.Common.props | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/targets/Helix.Common.props b/eng/targets/Helix.Common.props index 99b2ae03ea45..2f615fd3a7dc 100644 --- a/eng/targets/Helix.Common.props +++ b/eng/targets/Helix.Common.props @@ -43,7 +43,6 @@ - From cb67c9b44e4ced91c5100a2eca7509723dbfaa9d Mon Sep 17 00:00:00 2001 From: Brennan Date: Tue, 6 Sep 2022 14:26:34 -0700 Subject: [PATCH 07/37] [Backport] [SignalR] Fix WebSocket client close when network disappears (#43576) --- .../UnitTests/WebSocketsTransportTests.cs | 79 +++++++++++++++++++ .../src/Internal/WebSocketsTransport.cs | 35 ++++---- 2 files changed, 96 insertions(+), 18 deletions(-) create mode 100644 src/SignalR/clients/csharp/Client/test/UnitTests/WebSocketsTransportTests.cs diff --git a/src/SignalR/clients/csharp/Client/test/UnitTests/WebSocketsTransportTests.cs b/src/SignalR/clients/csharp/Client/test/UnitTests/WebSocketsTransportTests.cs new file mode 100644 index 000000000000..ecf6fd7b4a73 --- /dev/null +++ b/src/SignalR/clients/csharp/Client/test/UnitTests/WebSocketsTransportTests.cs @@ -0,0 +1,79 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Net.WebSockets; +using Microsoft.AspNetCore.Connections; +using Microsoft.AspNetCore.Http.Connections.Client; +using Microsoft.AspNetCore.Http.Connections.Client.Internal; +using Microsoft.AspNetCore.SignalR.Tests; +using Microsoft.AspNetCore.Testing; + +namespace Microsoft.AspNetCore.SignalR.Client.Tests; + +public class WebSocketsTransportTests : VerifiableLoggedTest +{ + // Tests that the transport can still be stopped if SendAsync and ReceiveAsync are hanging (ethernet unplugged for example) + [Fact] + public async Task StopCancelsSendAndReceive() + { + var options = new HttpConnectionOptions() + { + WebSocketFactory = (context, token) => + { + return ValueTask.FromResult((WebSocket)new TestWebSocket()); + }, + CloseTimeout = TimeSpan.FromMilliseconds(1), + }; + + using (StartVerifiableLog()) + { + var webSocketsTransport = new WebSocketsTransport(options, loggerFactory: LoggerFactory, () => Task.FromResult(null)); + + await webSocketsTransport.StartAsync( + new Uri("http://fakeuri.org"), TransferFormat.Text).DefaultTimeout(); + + await webSocketsTransport.StopAsync().DefaultTimeout(); + + await webSocketsTransport.Running.DefaultTimeout(); + } + } + + internal class TestWebSocket : WebSocket + { + public Task ConnectAsync(Uri uri, CancellationToken cancellationToken) => Task.CompletedTask; + + public override WebSocketCloseStatus? CloseStatus => null; + + public override string CloseStatusDescription => string.Empty; + + public override WebSocketState State => WebSocketState.Open; + + public override string SubProtocol => string.Empty; + + public override void Abort() { } + + public override Task CloseAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken) + => Task.CompletedTask; + + public override async Task CloseOutputAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken) + { + await cancellationToken.WaitForCancellationAsync(); + cancellationToken.ThrowIfCancellationRequested(); + } + + public override void Dispose() { } + + public override async Task ReceiveAsync(ArraySegment buffer, CancellationToken cancellationToken) + { + await cancellationToken.WaitForCancellationAsync(); + cancellationToken.ThrowIfCancellationRequested(); + return new WebSocketReceiveResult(0, WebSocketMessageType.Text, true); + } + + public override async Task SendAsync(ArraySegment buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken) + { + await cancellationToken.WaitForCancellationAsync(); + cancellationToken.ThrowIfCancellationRequested(); + } + } +} diff --git a/src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/WebSocketsTransport.cs b/src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/WebSocketsTransport.cs index 903a100160d7..664e25d58da8 100644 --- a/src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/WebSocketsTransport.cs +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/WebSocketsTransport.cs @@ -24,6 +24,7 @@ internal partial class WebSocketsTransport : ITransport private readonly TimeSpan _closeTimeout; private volatile bool _aborted; private readonly HttpConnectionOptions _httpConnectionOptions; + private readonly CancellationTokenSource _stopCts = new CancellationTokenSource(); private IDuplexPipe? _transport; @@ -204,6 +205,8 @@ private async Task ProcessSocketAsync(WebSocket socket) // Wait for send or receive to complete var trigger = await Task.WhenAny(receiving, sending); + _stopCts.CancelAfter(_closeTimeout); + if (trigger == receiving) { // We're waiting for the application to finish and there are 2 things it could be doing @@ -213,22 +216,14 @@ private async Task ProcessSocketAsync(WebSocket socket) // Cancel the application so that ReadAsync yields _application.Input.CancelPendingRead(); - using (var delayCts = new CancellationTokenSource()) - { - var resultTask = await Task.WhenAny(sending, Task.Delay(_closeTimeout, delayCts.Token)); + var resultTask = await Task.WhenAny(sending, Task.Delay(_closeTimeout, _stopCts.Token)); - if (resultTask != sending) - { - _aborted = true; + if (resultTask != sending) + { + _aborted = true; - // Abort the websocket if we're stuck in a pending send to the client - socket.Abort(); - } - else - { - // Cancel the timeout - delayCts.Cancel(); - } + // Abort the websocket if we're stuck in a pending send to the client + socket.Abort(); } } else @@ -258,7 +253,7 @@ private async Task StartReceiving(WebSocket socket) { #if NETSTANDARD2_1 || NETCOREAPP // Do a 0 byte read so that idle connections don't allocate a buffer when waiting for a read - var result = await socket.ReceiveAsync(Memory.Empty, CancellationToken.None); + var result = await socket.ReceiveAsync(Memory.Empty, _stopCts.Token); if (result.MessageType == WebSocketMessageType.Close) { @@ -275,13 +270,13 @@ private async Task StartReceiving(WebSocket socket) var memory = _application.Output.GetMemory(); #if NETSTANDARD2_1 || NETCOREAPP // Because we checked the CloseStatus from the 0 byte read above, we don't need to check again after reading - var receiveResult = await socket.ReceiveAsync(memory, CancellationToken.None); + var receiveResult = await socket.ReceiveAsync(memory, _stopCts.Token); #elif NETSTANDARD2_0 || NET461 var isArray = MemoryMarshal.TryGetArray(memory, out var arraySegment); Debug.Assert(isArray); // Exceptions are handled above where the send and receive tasks are being run. - var receiveResult = await socket.ReceiveAsync(arraySegment, CancellationToken.None); + var receiveResult = await socket.ReceiveAsync(arraySegment, _stopCts.Token); #else #error TFMs need to be updated #endif @@ -400,7 +395,7 @@ private async Task StartSending(WebSocket socket) try { // We're done sending, send the close frame to the client if the websocket is still open - await socket.CloseOutputAsync(error != null ? WebSocketCloseStatus.InternalServerError : WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); + await socket.CloseOutputAsync(error != null ? WebSocketCloseStatus.InternalServerError : WebSocketCloseStatus.NormalClosure, "", _stopCts.Token); } catch (Exception ex) { @@ -452,6 +447,9 @@ public async Task StopAsync() // Cancel any pending reads from the application, this should start the entire shutdown process _application.Input.CancelPendingRead(); + // Start ungraceful close timer + _stopCts.CancelAfter(_closeTimeout); + try { await Running; @@ -465,6 +463,7 @@ public async Task StopAsync() finally { _webSocket?.Dispose(); + _stopCts.Dispose(); } Log.TransportStopped(_logger, null); From 68b965d0ce85169b0a5ee00a03aa0e7c275bd718 Mon Sep 17 00:00:00 2001 From: Brennan Date: Tue, 6 Sep 2022 14:26:52 -0700 Subject: [PATCH 08/37] Pin language version in release branch (#43628) We shouldn't be using new language features in a patch, keep that stuff in main! --- eng/targets/CSharp.Common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/targets/CSharp.Common.props b/eng/targets/CSharp.Common.props index 87c1a48d9900..dbe98181cf3e 100644 --- a/eng/targets/CSharp.Common.props +++ b/eng/targets/CSharp.Common.props @@ -1,7 +1,7 @@ - preview + 10.0 strict From e1487ea08fd6cc15e770c0f923443d2353851874 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Tue, 6 Sep 2022 14:27:04 -0700 Subject: [PATCH 09/37] Handle T-E edge cases #43664 (#43671) --- .../Kestrel/Core/src/Internal/Http/HttpHeaders.cs | 8 ++++++++ src/Servers/Kestrel/Core/test/HttpHeadersTests.cs | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.cs b/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.cs index 3a9382333c25..ad57499dacf7 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.cs @@ -564,6 +564,14 @@ public static TransferCoding GetFinalTransferCoding(StringValues transferEncodin offset += sizeof(uint) / 2; transferEncodingOptions = TransferCoding.Chunked; } + else + { + transferEncodingOptions = TransferCoding.Other; + } + } + else + { + transferEncodingOptions = TransferCoding.Other; } if ((uint)offset >= (uint)values.Length) diff --git a/src/Servers/Kestrel/Core/test/HttpHeadersTests.cs b/src/Servers/Kestrel/Core/test/HttpHeadersTests.cs index b12dbefcf4f9..f6e1dc00d0c1 100644 --- a/src/Servers/Kestrel/Core/test/HttpHeadersTests.cs +++ b/src/Servers/Kestrel/Core/test/HttpHeadersTests.cs @@ -174,6 +174,9 @@ public void TestParseConnectionMultipleValues(string value1, string value2, int [InlineData(",, ", (int)(TransferCoding.None))] [InlineData(" , ,", (int)(TransferCoding.None))] [InlineData(" , , ", (int)(TransferCoding.None))] + [InlineData("c", (int)(TransferCoding.Other))] + [InlineData("z", (int)(TransferCoding.Other))] + [InlineData("chunk", (int)(TransferCoding.Other))] [InlineData("chunked,", (int)(TransferCoding.Chunked))] [InlineData("chunked,,", (int)(TransferCoding.Chunked))] [InlineData("chunked, ", (int)(TransferCoding.Chunked))] @@ -191,6 +194,14 @@ public void TestParseConnectionMultipleValues(string value1, string value2, int [InlineData("deflate, chunked", (int)(TransferCoding.Chunked))] [InlineData("gzip,chunked", (int)(TransferCoding.Chunked))] [InlineData("compress,,chunked", (int)(TransferCoding.Chunked))] + [InlineData("chunked,c", (int)(TransferCoding.Other))] + [InlineData("chunked,z", (int)(TransferCoding.Other))] + [InlineData("chunked,zz", (int)(TransferCoding.Other))] + [InlineData("chunked, z", (int)(TransferCoding.Other))] + [InlineData("chunked, zz", (int)(TransferCoding.Other))] + [InlineData("chunked,chunk", (int)(TransferCoding.Other))] + [InlineData("z,chunked", (int)(TransferCoding.Chunked))] + [InlineData("z, chunked", (int)(TransferCoding.Chunked))] [InlineData("chunkedchunked", (int)(TransferCoding.Other))] [InlineData("chunked2", (int)(TransferCoding.Other))] [InlineData("chunked 2", (int)(TransferCoding.Other))] From 6e7667d602801c1a8692ab36357c20eab55cd39a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Sep 2022 14:27:22 -0700 Subject: [PATCH 10/37] [release/6.0] (deps): Bump src/submodules/googletest from `dd7a9d2` to `9080381` (#43690) * [release/6.0] (deps): Bump src/submodules/googletest Bumps [src/submodules/googletest](https://github.com/google/googletest) from `dd7a9d2` to `9080381`. - [Release notes](https://github.com/google/googletest/releases) - [Commits](https://github.com/google/googletest/compare/dd7a9d29a33de34836c345c3b753d4eba15c5f44...9080381758fad853aa17ba1c3255ee8a35e452ca) --- updated-dependencies: - dependency-name: src/submodules/googletest dependency-type: direct:production ... Signed-off-by: dependabot[bot] * Update public pool names Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex Perovich --- src/submodules/googletest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/submodules/googletest b/src/submodules/googletest index dd7a9d29a33d..9080381758fa 160000 --- a/src/submodules/googletest +++ b/src/submodules/googletest @@ -1 +1 @@ -Subproject commit dd7a9d29a33de34836c345c3b753d4eba15c5f44 +Subproject commit 9080381758fad853aa17ba1c3255ee8a35e452ca From a8368a3f7f43456131303791586d5a7fdfdf8487 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 7 Sep 2022 07:35:21 +0000 Subject: [PATCH 11/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore dnceng/internal/dotnet-runtime --- NuGet.config | 10 +++---- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 30 ++++++++++----------- 3 files changed, 49 insertions(+), 51 deletions(-) diff --git a/NuGet.config b/NuGet.config index b3e41f31e29c..473766d1f74e 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,11 +5,10 @@ + - - - + @@ -29,11 +28,10 @@ - - - + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 60bab77d60ef..d3cfb81e9668 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 33e3c950af2eb996c0b3c48e30eb4471138da675 + c3feb1e7de869ed990c0e77390a8cbab0d3b514e - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 33e3c950af2eb996c0b3c48e30eb4471138da675 + c3feb1e7de869ed990c0e77390a8cbab0d3b514e - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 33e3c950af2eb996c0b3c48e30eb4471138da675 + c3feb1e7de869ed990c0e77390a8cbab0d3b514e - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 33e3c950af2eb996c0b3c48e30eb4471138da675 + c3feb1e7de869ed990c0e77390a8cbab0d3b514e - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 33e3c950af2eb996c0b3c48e30eb4471138da675 + c3feb1e7de869ed990c0e77390a8cbab0d3b514e - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 33e3c950af2eb996c0b3c48e30eb4471138da675 + c3feb1e7de869ed990c0e77390a8cbab0d3b514e - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 33e3c950af2eb996c0b3c48e30eb4471138da675 + c3feb1e7de869ed990c0e77390a8cbab0d3b514e - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 33e3c950af2eb996c0b3c48e30eb4471138da675 + c3feb1e7de869ed990c0e77390a8cbab0d3b514e https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 https://github.com/dotnet/runtime @@ -245,33 +245,33 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 diff --git a/eng/Versions.props b/eng/Versions.props index 65356d76e5cb..497f5c0ff21d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -63,12 +63,12 @@ 6.0.0 - 6.0.9 - 6.0.9 - 6.0.9 - 6.0.9 - 6.0.9 - 6.0.9-servicing.22451.7 + 6.0.10 + 6.0.10 + 6.0.10 + 6.0.10 + 6.0.10 + 6.0.10-servicing.22456.15 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.9-servicing.22451.7 + 6.0.10-servicing.22456.15 6.0.0 6.0.0 6.0.1 @@ -122,14 +122,14 @@ 6.0.5 - 6.0.9 - 6.0.9 - 6.0.9 - 6.0.9 - 6.0.9 - 6.0.9 - 6.0.9 - 6.0.9 + 6.0.10 + 6.0.10 + 6.0.10 + 6.0.10 + 6.0.10 + 6.0.10 + 6.0.10 + 6.0.10 6.0.0-beta.22314.7 6.0.0-beta.22314.7 From 6cb3bc1186cc26aa1de8b32ca3bfe98d420a96b7 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 7 Sep 2022 13:51:23 +0000 Subject: [PATCH 12/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 473766d1f74e..eeb6d468666f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d3cfb81e9668..dee80fa96474 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c3feb1e7de869ed990c0e77390a8cbab0d3b514e + 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c3feb1e7de869ed990c0e77390a8cbab0d3b514e + 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c3feb1e7de869ed990c0e77390a8cbab0d3b514e + 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c3feb1e7de869ed990c0e77390a8cbab0d3b514e + 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c3feb1e7de869ed990c0e77390a8cbab0d3b514e + 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c3feb1e7de869ed990c0e77390a8cbab0d3b514e + 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c3feb1e7de869ed990c0e77390a8cbab0d3b514e + 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c3feb1e7de869ed990c0e77390a8cbab0d3b514e + 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 https://github.com/dotnet/runtime From b7db82a7a04def3138eb63d72006e9bf2cd4639e Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Wed, 7 Sep 2022 09:08:49 -0700 Subject: [PATCH 13/37] Merged PR 25295: Allow spaces between the url and http version (#43704) # Allow spaces between the url and http version ## Description This is a change for app service to allow requests that have extra spaces between the url and http version. E.g. "GET(sp)/(sp)(sp)HTTP/1.1\r\n". The spec only allows one space, but some clients send more than one and IIS/Http.Sys allow it. ## Customer Impact The customer regressed when app service moved to Kestrel. The customer doesn't expect to be able to update/replace the affected clients for 3+ years. ## Regression? - [ ] Yes - [ ] No - [x] Umm... Not a regression in Kestrel, but a compat break for customers moving from IIS/Http.Sys. ## Risk - [ ] High - [ ] Medium - [x] Low Constrained, unit testable. ## Verification - [x] Manual (required) - [x] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A --- .../Core/src/Internal/Http/HttpParser.cs | 8 ++++++++ .../Kestrel/shared/test/HttpParsingData.cs | 18 ++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs b/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs index 40df4e8fa615..02f01da51a3c 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs @@ -148,6 +148,14 @@ private void ParseRequestLine(TRequestHandler handler, ReadOnlySpan reques // Consume space offset++; + while ((uint)offset < (uint)requestLine.Length + && requestLine[offset] == ByteSpace) + { + // It's invalid to have multiple spaces between the url resource and version + // but some clients do it. Skip them. + offset++; + } + // Version + CR is 9 bytes which should take us to .Length // LF should have been dropped prior to method call if ((uint)offset + 9 != (uint)requestLine.Length || requestLine[offset + sizeof(ulong)] != ByteCR) diff --git a/src/Servers/Kestrel/shared/test/HttpParsingData.cs b/src/Servers/Kestrel/shared/test/HttpParsingData.cs index edfe18d39f3a..5f30b7b107e3 100644 --- a/src/Servers/Kestrel/shared/test/HttpParsingData.cs +++ b/src/Servers/Kestrel/shared/test/HttpParsingData.cs @@ -76,7 +76,9 @@ public static IEnumerable RequestLineValidData var httpVersions = new[] { "HTTP/1.0", - "HTTP/1.1" + "HTTP/1.1", + " HTTP/1.1", + " HTTP/1.1" }; return from method in methods @@ -91,7 +93,7 @@ select new[] $"{path.Item1}", $"{path.Item2}", queryString, - httpVersion + httpVersion.Trim() }; } } @@ -164,6 +166,12 @@ public static IEnumerable RequestLineInvalidData "GET / HTTP/1.1\n", "GET / HTTP/1.0\rA\n", "GET / HTTP/1.1\ra\n", + "GET / HTTP/1.1\r\n", + "GET / HTTP/1.1\r\n", + "GET / HTTP/1.1\r\n", + "GET / HTTP/1.1\r\n", + "GET / HTTP/1.1 \r\n", + "GET / HTTP/1.1 \r\n", "GET / H\r\n", "GET / HT\r\n", "GET / HTT\r\n", @@ -195,6 +203,12 @@ public static IEnumerable RequestLineInvalidData "CUSTOM / HTTP/1.1\n", "CUSTOM / HTTP/1.0\rA\n", "CUSTOM / HTTP/1.1\ra\n", + "CUSTOM / HTTP/1.1\r\n", + "CUSTOM / HTTP/1.1\r\n", + "CUSTOM / HTTP/1.1\r\n", + "CUSTOM / HTTP/1.1\r\n", + "CUSTOM / HTTP/1.1 \r\n", + "CUSTOM / HTTP/1.1 \r\n", "CUSTOM / H\r\n", "CUSTOM / HT\r\n", "CUSTOM / HTT\r\n", From 9ddf95292ffd2ad4e192532a248082cd25fb9463 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 8 Sep 2022 04:24:28 +0000 Subject: [PATCH 14/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 8 ++++---- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/NuGet.config b/NuGet.config index eeb6d468666f..d183be08a4ec 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,8 +4,8 @@ + - @@ -31,8 +31,8 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index dee80fa96474..2c623cd99a1f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -93,9 +93,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - - https://github.com/dotnet/runtime - 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + c222ff33bf7b1075a7d4867b733965211e9c2ef9 https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 + c222ff33bf7b1075a7d4867b733965211e9c2ef9 https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 + c222ff33bf7b1075a7d4867b733965211e9c2ef9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 + c222ff33bf7b1075a7d4867b733965211e9c2ef9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 + c222ff33bf7b1075a7d4867b733965211e9c2ef9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 + c222ff33bf7b1075a7d4867b733965211e9c2ef9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 + c222ff33bf7b1075a7d4867b733965211e9c2ef9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3a842c00f6db7b2a5f4ac43941ff54a9b9f9be78 + c222ff33bf7b1075a7d4867b733965211e9c2ef9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f316191dbb5782d76ceb457018dcd80ff8ce8692 + c222ff33bf7b1075a7d4867b733965211e9c2ef9 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 497f5c0ff21d..757fd8687221 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22456.15 + 6.0.10-servicing.22457.11 6.0.0 6.0.1 6.0.0 @@ -82,7 +82,7 @@ 6.0.1 6.0.0 6.0.0 - 6.0.0 + 6.0.1 6.0.0 6.0.0 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22456.15 + 6.0.10-servicing.22457.11 6.0.0 6.0.0 6.0.1 @@ -120,7 +120,7 @@ 6.0.6 6.0.0 - 6.0.5 + 6.0.6 6.0.10 6.0.10 From 1dc2623012bc575e8dd1f8a51f3811545ee2110b Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 8 Sep 2022 06:18:17 +0000 Subject: [PATCH 15/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index d183be08a4ec..a98e3e73e462 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2c623cd99a1f..073bab1d2a71 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 + 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 + 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 + 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 + 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 + 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 + 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 + 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 3637ffbb8563bdc48fa9be7d46f36961f8a0c222 + 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 https://github.com/dotnet/runtime From fb2698e7bf2908b6abed19cdc1b9f1ee43135889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Ros?= Date: Thu, 8 Sep 2022 14:37:24 -0700 Subject: [PATCH 16/37] [release/6.0] Backport LF line terminator support in HttpParser (#43812) --- .../Core/src/Internal/Http/HttpParser.cs | 304 +++++++++++------- .../Kestrel/Core/test/HttpParserTests.cs | 4 +- .../Kestrel/shared/test/TestServiceContext.cs | 15 +- .../test/FunctionalTests/RequestTests.cs | 43 +++ 4 files changed, 236 insertions(+), 130 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs b/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs index 02f01da51a3c..899465819199 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/HttpParser.cs @@ -17,20 +17,22 @@ public class HttpParser : IHttpParser where TR { private readonly bool _showErrorDetails; private readonly bool _allowSpaceAfterRequestLine; + private readonly bool _enableHttp1LineFeedTerminators; public HttpParser() : this(showErrorDetails: true) { } public HttpParser(bool showErrorDetails) - : this (showErrorDetails, CheckAllowSpaceAfterRequestLine()) + : this (showErrorDetails, CheckAllowSpaceAfterRequestLine(), CheckEnableHttp1LineFeedTerminators()) { } - internal HttpParser(bool showErrorDetails, bool allowSpaceAfterRequestLine) + internal HttpParser(bool showErrorDetails, bool allowSpaceAfterRequestLine, bool enableHttp1LineFeedTerminators) { _showErrorDetails = showErrorDetails; _allowSpaceAfterRequestLine = allowSpaceAfterRequestLine; + _enableHttp1LineFeedTerminators = enableHttp1LineFeedTerminators; } private static bool CheckAllowSpaceAfterRequestLine() @@ -40,6 +42,12 @@ private static bool CheckAllowSpaceAfterRequestLine() return allowSpaceAfterRequestLine; } + private static bool CheckEnableHttp1LineFeedTerminators() + { + AppContext.TryGetSwitch("Microsoft.AspNetCore.Server.Kestrel.EnableHttp1LineFeedTerminators", out var enableHttp1LineFeedTerminators); + return enableHttp1LineFeedTerminators; + } + // byte types don't have a data type annotation so we pre-cast them; to avoid in-place casts private const byte ByteCR = (byte)'\r'; private const byte ByteLF = (byte)'\n'; @@ -158,9 +166,15 @@ private void ParseRequestLine(TRequestHandler handler, ReadOnlySpan reques // Version + CR is 9 bytes which should take us to .Length // LF should have been dropped prior to method call - if ((uint)offset + 9 != (uint)requestLine.Length || requestLine[offset + sizeof(ulong)] != ByteCR) + if ((uint)offset + 9 != (uint)requestLine.Length || requestLine[offset + 8] != ByteCR) { - RejectRequestLine(requestLine); + // LF should have been dropped prior to method call + // If _enableHttp1LineFeedTerminators and offset + 8 is .Length, + // then requestLine is valid since it means LF was the next char + if (!_enableHttp1LineFeedTerminators || (uint)offset + 8 != (uint)requestLine.Length) + { + RejectRequestLine(requestLine); + } } // Version @@ -183,140 +197,146 @@ public bool ParseHeaders(TRequestHandler handler, ref SequenceReader reade { while (!reader.End) { + // Check if the reader's span contains an LF to skip the reader if possible var span = reader.UnreadSpan; - while (span.Length > 0) + + // Fast path, CR/LF at the beginning + if (span.Length >= 2 && span[0] == ByteCR && span[1] == ByteLF) { - var ch1 = (byte)0; - var ch2 = (byte)0; - var readAhead = 0; + reader.Advance(2); + handler.OnHeadersComplete(endStream: false); + return true; + } - // Fast path, we're still looking at the same span - if (span.Length >= 2) - { - ch1 = span[0]; - ch2 = span[1]; - } - else if (reader.TryRead(out ch1)) // Possibly split across spans - { - // Note if we read ahead by 1 or 2 bytes - readAhead = (reader.TryRead(out ch2)) ? 2 : 1; - } + var foundCrlf = false; - if (ch1 == ByteCR) + var lfOrCrIndex = span.IndexOfAny(ByteCR, ByteLF); + if (lfOrCrIndex >= 0) + { + if (span[lfOrCrIndex] == ByteCR) { - // Check for final CRLF. - if (ch2 == ByteLF) - { - // If we got 2 bytes from the span directly so skip ahead 2 so that - // the reader's state matches what we expect - if (readAhead == 0) - { - reader.Advance(2); - } + // We got a CR. Is this a CR/LF sequence? + var crIndex = lfOrCrIndex; + reader.Advance(crIndex + 1); - // Double CRLF found, so end of headers. - handler.OnHeadersComplete(endStream: false); - return true; + bool hasDataAfterCr; + + if ((uint)span.Length > (uint)(crIndex + 1) && span[crIndex + 1] == ByteLF) + { + // CR/LF in the same span (common case) + span = span.Slice(0, crIndex); + foundCrlf = true; } - else if (readAhead == 1) + else if ((hasDataAfterCr = reader.TryPeek(out byte lfMaybe)) && lfMaybe == ByteLF) { - // Didn't read 2 bytes, reset the reader so we don't consume anything - reader.Rewind(1); - return false; + // CR/LF but split between spans + span = span.Slice(0, span.Length - 1); + foundCrlf = true; } - - Debug.Assert(readAhead == 0 || readAhead == 2); - // Headers don't end in CRLF line. - - KestrelBadHttpRequestException.Throw(RequestRejectionReason.InvalidRequestHeadersNoCRLF); - } - - var length = 0; - // We only need to look for the end if we didn't read ahead; otherwise there isn't enough in - // in the span to contain a header. - if (readAhead == 0) - { - length = span.IndexOfAny(ByteCR, ByteLF); - // If not found length with be -1; casting to uint will turn it to uint.MaxValue - // which will be larger than any possible span.Length. This also serves to eliminate - // the bounds check for the next lookup of span[length] - if ((uint)length < (uint)span.Length) + else { - // Early memory read to hide latency - var expectedCR = span[length]; - // Correctly has a CR, move to next - length++; - - if (expectedCR != ByteCR) + // What's after the CR? + if (!hasDataAfterCr) { - // Sequence needs to be CRLF not LF first. - RejectRequestHeader(span[..length]); + // No more chars after CR? Don't consume an incomplete header + reader.Rewind(crIndex + 1); + return false; } - - if ((uint)length < (uint)span.Length) + else if (crIndex == 0) { - // Early memory read to hide latency - var expectedLF = span[length]; - // Correctly has a LF, move to next - length++; - - if (expectedLF != ByteLF || - length < 5 || - // Exclude the CRLF from the headerLine and parse the header name:value pair - !TryTakeSingleHeader(handler, span[..(length - 2)])) - { - // Sequence needs to be CRLF and not contain an inner CR not part of terminator. - // Less than min possible headerSpan of 5 bytes a:b\r\n - // Not parsable as a valid name:value header pair. - RejectRequestHeader(span[..length]); - } - - // Read the header successfully, skip the reader forward past the headerSpan. - span = span.Slice(length); - reader.Advance(length); + // CR followed by something other than LF + KestrelBadHttpRequestException.Throw(RequestRejectionReason.InvalidRequestHeadersNoCRLF); } else { - // No enough data, set length to 0. - length = 0; + // Include the thing after the CR in the rejection exception. + var stopIndex = crIndex + 2; + RejectRequestHeader(span[..stopIndex]); } } - } - // End found in current span - if (length > 0) - { - continue; - } + if (foundCrlf) + { + // Advance past the LF too + reader.Advance(1); - // We moved the reader to look ahead 2 bytes so rewind the reader - if (readAhead > 0) - { - reader.Rewind(readAhead); + // Empty line? + if (crIndex == 0) + { + handler.OnHeadersComplete(endStream: false); + return true; + } + } } + else + { + // We got an LF with no CR before it. + var lfIndex = lfOrCrIndex; + if (!_enableHttp1LineFeedTerminators) + { + RejectRequestHeader(AppendEndOfLine(span[..lfIndex], lineFeedOnly: true)); + } - length = ParseMultiSpanHeader(handler, ref reader); + // Consume the header including the LF + reader.Advance(lfIndex + 1); + + span = span.Slice(0, lfIndex); + if (span.Length == 0) + { + handler.OnHeadersComplete(endStream: false); + return true; + } + } + } + else + { + // No CR or LF. Is this a multi-span header? + int length = ParseMultiSpanHeader(handler, ref reader); if (length < 0) { - // Not there + // Not multi-line, just bad. return false; } + // This was a multi-line header. Advance the reader. reader.Advance(length); - // As we crossed spans set the current span to default - // so we move to the next span on the next iteration - span = default; + + continue; + } + + // We got to a point where we believe we have a header. + if (!TryTakeSingleHeader(handler, span)) + { + // Sequence needs to be CRLF and not contain an inner CR not part of terminator. + // Not parsable as a valid name:value header pair. + RejectRequestHeader(AppendEndOfLine(span, lineFeedOnly: !foundCrlf)); } } return false; } + private static byte[] AppendEndOfLine(ReadOnlySpan span, bool lineFeedOnly) + { + var array = new byte[span.Length + (lineFeedOnly ? 1 : 2)]; + + span.CopyTo(array); + array[^1] = ByteLF; + + if (!lineFeedOnly) + { + array[^2] = ByteCR; + } + + return array; + } + + // Parse a header that might cross multiple spans, and return the length of the header + // or -1 if there was a failure during parsing. private int ParseMultiSpanHeader(TRequestHandler handler, ref SequenceReader reader) { var currentSlice = reader.UnreadSequence; var lineEndPosition = currentSlice.PositionOfAny(ByteCR, ByteLF); - if (lineEndPosition == null) { // Not there. @@ -324,44 +344,84 @@ private int ParseMultiSpanHeader(TRequestHandler handler, ref SequenceReader headerSpan; + ReadOnlySequence header; + + var firstLineEndCharPos = lineEndPosition.Value; + currentSlice.TryGet(ref firstLineEndCharPos, out var s); + var firstEolChar = s.Span[0]; + + // Is the first EOL char the last of the current slice? if (currentSlice.Slice(reader.Position, lineEndPosition.Value).Length == currentSlice.Length - 1) { - // No enough data, so CRLF can't currently be there. - // However, we need to check the found char is CR and not LF - - // Advance 1 to include CR/LF in lineEnd - lineEnd = currentSlice.GetPosition(1, lineEndPosition.Value); - headerSpan = currentSlice.Slice(reader.Position, lineEnd).ToSpan(); - if (headerSpan[^1] != ByteCR) + // Get the EOL char + if (firstEolChar == ByteCR) + { + // CR without LF, can't read the header + return -1; + } + else { - RejectRequestHeader(headerSpan); + if (!_enableHttp1LineFeedTerminators) + { + // LF only but disabled + + // Advance 1 to include LF in result + lineEnd = currentSlice.GetPosition(1, lineEndPosition.Value); + RejectRequestHeader(currentSlice.Slice(reader.Position, lineEnd).ToSpan()); + } } + } + + // At this point the first EOL char is not the last byte in the current slice + + // Offset 1 to include the first EOL char. + firstLineEndCharPos = currentSlice.GetPosition(1, lineEndPosition.Value); + + if (firstEolChar == ByteCR) + { + // First EOL char is CR, include the char after CR + lineEnd = currentSlice.GetPosition(2, lineEndPosition.Value); + header = currentSlice.Slice(reader.Position, lineEnd); + } + else if (!_enableHttp1LineFeedTerminators) + { + // The terminator is an LF and we don't allow it. + RejectRequestHeader(currentSlice.Slice(reader.Position, firstLineEndCharPos).ToSpan()); return -1; } + else + { + // First EOL char is LF. only include this one + lineEnd = currentSlice.GetPosition(1, lineEndPosition.Value); + header = currentSlice.Slice(reader.Position, lineEnd); + } - // Advance 2 to include CR{LF?} in lineEnd - lineEnd = currentSlice.GetPosition(2, lineEndPosition.Value); - headerSpan = currentSlice.Slice(reader.Position, lineEnd).ToSpan(); + var headerSpan = header.ToSpan(); - if (headerSpan.Length < 5) + // 'a:b\n' or 'a:b\r\n' + var minHeaderSpan = !_enableHttp1LineFeedTerminators ? 5 : 4; + if (headerSpan.Length < minHeaderSpan) { - // Less than min possible headerSpan is 5 bytes a:b\r\n RejectRequestHeader(headerSpan); } - if (headerSpan[^2] != ByteCR) + var terminatorSize = -1; + + if (headerSpan[^1] == ByteLF) { - // Sequence needs to be CRLF not LF first. - RejectRequestHeader(headerSpan[..^1]); + if (headerSpan[^2] == ByteCR) + { + terminatorSize = 2; + } + else if (_enableHttp1LineFeedTerminators) + { + terminatorSize = 1; + } } - if (headerSpan[^1] != ByteLF || - // Exclude the CRLF from the headerLine and parse the header name:value pair - !TryTakeSingleHeader(handler, headerSpan[..^2])) + // Last chance to bail if the terminator size is not valid or the header doesn't parse. + if (terminatorSize == -1 || !TryTakeSingleHeader(handler, headerSpan.Slice(0, headerSpan.Length - terminatorSize))) { - // Sequence needs to be CRLF and not contain an inner CR not part of terminator. - // Not parsable as a valid name:value header pair. RejectRequestHeader(headerSpan); } diff --git a/src/Servers/Kestrel/Core/test/HttpParserTests.cs b/src/Servers/Kestrel/Core/test/HttpParserTests.cs index 7cb66af28170..17374c0a8f02 100644 --- a/src/Servers/Kestrel/Core/test/HttpParserTests.cs +++ b/src/Servers/Kestrel/Core/test/HttpParserTests.cs @@ -558,8 +558,8 @@ private void VerifyRawHeaders(string rawHeaders, IEnumerable expectedHea Assert.True(buffer.Slice(reader.Position).IsEmpty); } - private IHttpParser CreateParser(IKestrelTrace log, bool allowSpaceAfterRequestLine = false) - => new HttpParser(log.IsEnabled(LogLevel.Information), allowSpaceAfterRequestLine); + private IHttpParser CreateParser(IKestrelTrace log, bool allowSpaceAfterRequestLine = false, bool enableHttp1LineFeedTerminators = false) + => new HttpParser(log.IsEnabled(LogLevel.Information), allowSpaceAfterRequestLine, enableHttp1LineFeedTerminators); public static IEnumerable RequestLineValidData => HttpParsingData.RequestLineValidData; diff --git a/src/Servers/Kestrel/shared/test/TestServiceContext.cs b/src/Servers/Kestrel/shared/test/TestServiceContext.cs index 6825840ba012..d7e1f9efeec5 100644 --- a/src/Servers/Kestrel/shared/test/TestServiceContext.cs +++ b/src/Servers/Kestrel/shared/test/TestServiceContext.cs @@ -22,14 +22,14 @@ public TestServiceContext() Initialize(kestrelTrace.LoggerFactory, kestrelTrace); } - public TestServiceContext(ILoggerFactory loggerFactory) + public TestServiceContext(ILoggerFactory loggerFactory, bool enableHttp1LineFeedTerminators = false) { - Initialize(loggerFactory, CreateLoggingTrace(loggerFactory)); + Initialize(loggerFactory, CreateLoggingTrace(loggerFactory), enableHttp1LineFeedTerminators); } - public TestServiceContext(ILoggerFactory loggerFactory, IKestrelTrace kestrelTrace) + public TestServiceContext(ILoggerFactory loggerFactory, IKestrelTrace kestrelTrace, bool enableHttp1LineFeedTerminators = false) { - Initialize(loggerFactory, new CompositeKestrelTrace(kestrelTrace, CreateLoggingTrace(loggerFactory))); + Initialize(loggerFactory, new CompositeKestrelTrace(kestrelTrace, CreateLoggingTrace(loggerFactory)), enableHttp1LineFeedTerminators); } private static KestrelTrace CreateLoggingTrace(ILoggerFactory loggerFactory) @@ -51,7 +51,7 @@ public void InitializeHeartbeat() SystemClock = heartbeatManager; } - private void Initialize(ILoggerFactory loggerFactory, IKestrelTrace kestrelTrace) + private void Initialize(ILoggerFactory loggerFactory, IKestrelTrace kestrelTrace, bool enableHttp1LineFeedTerminators = false) { LoggerFactory = loggerFactory; Log = kestrelTrace; @@ -60,7 +60,10 @@ private void Initialize(ILoggerFactory loggerFactory, IKestrelTrace kestrelTrace SystemClock = MockSystemClock; DateHeaderValueManager = new DateHeaderValueManager(); ConnectionManager = new ConnectionManager(Log, ResourceCounter.Unlimited); - HttpParser = new HttpParser(Log.IsEnabled(LogLevel.Information)); + HttpParser = new HttpParser( + Log.IsEnabled(LogLevel.Information), + allowSpaceAfterRequestLine: false, + enableHttp1LineFeedTerminators); ServerOptions = new KestrelServerOptions { AddServerHeader = false diff --git a/src/Servers/Kestrel/test/FunctionalTests/RequestTests.cs b/src/Servers/Kestrel/test/FunctionalTests/RequestTests.cs index 519c131a012f..e10a5dc3ad3d 100644 --- a/src/Servers/Kestrel/test/FunctionalTests/RequestTests.cs +++ b/src/Servers/Kestrel/test/FunctionalTests/RequestTests.cs @@ -864,6 +864,49 @@ await connection.Send( mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny()), Times.Once()); } + [Fact] + public async Task SingleLineFeedIsSupportedAnywhere() + { + // Exercises all combinations of LF and CRLF as line separators. + // Uses a bit mask for all the possible combinations. + + var lines = new[] + { + $"GET / HTTP/1.1", + "Content-Length: 0", + $"Host: localhost", + "", + }; + + await using (var server = new TestServer(context => Task.CompletedTask, new TestServiceContext(LoggerFactory, enableHttp1LineFeedTerminators: true))) + { + var mask = Math.Pow(2, lines.Length) - 1; + + for (var m = 0; m <= mask; m++) + { + using (var client = server.CreateConnection()) + { + var sb = new StringBuilder(); + + for (var pos = 0; pos < lines.Length; pos++) + { + sb.Append(lines[pos]); + var separator = (m & (1 << pos)) != 0 ? "\n" : "\r\n"; + sb.Append(separator); + } + + var text = sb.ToString(); + var writer = new StreamWriter(client.Stream, Encoding.GetEncoding("iso-8859-1")); + await writer.WriteAsync(text).ConfigureAwait(false); + await writer.FlushAsync().ConfigureAwait(false); + await client.Stream.FlushAsync().ConfigureAwait(false); + + await client.Receive("HTTP/1.1 200"); + } + } + } + } + private async Task TestRemoteIPAddress(string registerAddress, string requestAddress, string expectAddress) { var builder = TransportSelector.GetHostBuilder() From 7bc94de6e9b91fd528ebc8bff9b9dc473b665d27 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Sat, 10 Sep 2022 14:00:28 +0000 Subject: [PATCH 17/37] Use Path.GetTempFileName() for 600 Unix file mode --- .../Repositories/FileSystemXmlRepository.cs | 9 ++++ .../FileSystemXmlRepositoryTests.cs | 34 ++++++++++++++ .../src/FileBufferingReadStream.cs | 9 ++++ .../src/FileBufferingWriteStream.cs | 9 ++++ .../test/FileBufferingReadStreamTests.cs | 43 +++++++++++++++++ .../test/FileBufferingWriteStreamTests.cs | 33 +++++++++++++ .../CertificateManager.cs | 17 +++++++ .../test/CertificateManagerTests.cs | 46 +++++++++++++++++++ .../src/Internal/SecretsStore.cs | 11 +++++ src/Tools/dotnet-user-secrets/src/Program.cs | 7 +++ .../test/SecretManagerTests.cs | 28 +++++++++++ 11 files changed, 246 insertions(+) diff --git a/src/DataProtection/DataProtection/src/Repositories/FileSystemXmlRepository.cs b/src/DataProtection/DataProtection/src/Repositories/FileSystemXmlRepository.cs index e495f45e4725..dfbdf4a1e226 100644 --- a/src/DataProtection/DataProtection/src/Repositories/FileSystemXmlRepository.cs +++ b/src/DataProtection/DataProtection/src/Repositories/FileSystemXmlRepository.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Runtime.InteropServices; using System.Xml.Linq; using Microsoft.AspNetCore.DataProtection.Internal; using Microsoft.Extensions.Logging; @@ -131,9 +132,17 @@ private void StoreElementCore(XElement element, string filename) // crashes mid-write, we won't end up with a corrupt .xml file. Directory.Create(); // won't throw if the directory already exists + var tempFilename = Path.Combine(Directory.FullName, Guid.NewGuid().ToString() + ".tmp"); var finalFilename = Path.Combine(Directory.FullName, filename + ".xml"); + // Create a temp file with the correct Unix file mode before moving it to the expected finalFilename. + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var tempTempFilename = Path.GetTempFileName(); + File.Move(tempTempFilename, tempFilename); + } + try { using (var tempFileStream = File.OpenWrite(tempFilename)) diff --git a/src/DataProtection/DataProtection/test/Repositories/FileSystemXmlRepositoryTests.cs b/src/DataProtection/DataProtection/test/Repositories/FileSystemXmlRepositoryTests.cs index 4a5fbd282bfd..fce9cdf15f1a 100644 --- a/src/DataProtection/DataProtection/test/Repositories/FileSystemXmlRepositoryTests.cs +++ b/src/DataProtection/DataProtection/test/Repositories/FileSystemXmlRepositoryTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -158,6 +159,39 @@ public void Logs_DockerEphemeralFolders() }); } + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")] + public void StoreElement_CreatesFileWithUserOnlyUnixFileMode() + { + WithUniqueTempDirectory(dirInfo => + { + // Arrange + var element = XElement.Parse(""); + var repository = new FileSystemXmlRepository(dirInfo, NullLoggerFactory.Instance); + + // Act + repository.StoreElement(element, "friendly-name"); + + // Assert + var fileInfo = Assert.Single(dirInfo.GetFiles()); + + //Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, fileInfo.UnixFileMode); + var processStartInfo = new ProcessStartInfo + { + FileName = "ls", + Arguments = $"-l {fileInfo.FullName}", + RedirectStandardOutput = true, + UseShellExecute = false + }; + var process = Process.Start(processStartInfo); + + Assert.NotNull(process); + var output = process!.StandardOutput.ReadToEnd(); + process.WaitForExit(); + Assert.StartsWith("-rw-------", output); + }); + } + /// /// Runs a test and cleans up the temp directory afterward. /// diff --git a/src/Http/WebUtilities/src/FileBufferingReadStream.cs b/src/Http/WebUtilities/src/FileBufferingReadStream.cs index f66916c8ebff..f8873905c205 100644 --- a/src/Http/WebUtilities/src/FileBufferingReadStream.cs +++ b/src/Http/WebUtilities/src/FileBufferingReadStream.cs @@ -6,6 +6,7 @@ using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; +using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Internal; @@ -258,6 +259,14 @@ private Stream CreateTempFile() } _tempFileName = Path.Combine(_tempFileDirectory, "ASPNETCORE_" + Guid.NewGuid().ToString() + ".tmp"); + + // Create a temp file with the correct Unix file mode before moving it to the assigned _tempFileName in the _tempFileDirectory. + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var tempTempFileName = Path.GetTempFileName(); + File.Move(tempTempFileName, _tempFileName); + } + return new FileStream(_tempFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.Delete, 1024 * 16, FileOptions.Asynchronous | FileOptions.DeleteOnClose | FileOptions.SequentialScan); } diff --git a/src/Http/WebUtilities/src/FileBufferingWriteStream.cs b/src/Http/WebUtilities/src/FileBufferingWriteStream.cs index 28c4c27ab758..33ad86dc282a 100644 --- a/src/Http/WebUtilities/src/FileBufferingWriteStream.cs +++ b/src/Http/WebUtilities/src/FileBufferingWriteStream.cs @@ -7,6 +7,7 @@ using System.Diagnostics.CodeAnalysis; using System.IO; using System.IO.Pipelines; +using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Internal; @@ -271,6 +272,14 @@ private void EnsureFileStream() { var tempFileDirectory = _tempFileDirectoryAccessor(); var tempFileName = Path.Combine(tempFileDirectory, "ASPNETCORE_" + Guid.NewGuid() + ".tmp"); + + // Create a temp file with the correct Unix file mode before moving it to the assigned tempFileName in the _tempFileDirectory. + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var tempTempFileName = Path.GetTempFileName(); + File.Move(tempTempFileName, tempFileName); + } + FileStream = new FileStream( tempFileName, FileMode.Create, diff --git a/src/Http/WebUtilities/test/FileBufferingReadStreamTests.cs b/src/Http/WebUtilities/test/FileBufferingReadStreamTests.cs index 640562b6c6a0..29ea59fd5471 100644 --- a/src/Http/WebUtilities/test/FileBufferingReadStreamTests.cs +++ b/src/Http/WebUtilities/test/FileBufferingReadStreamTests.cs @@ -3,9 +3,11 @@ using System; using System.Buffers; +using System.Diagnostics; using System.IO; using System.Linq; using System.Threading.Tasks; +using Microsoft.AspNetCore.Testing; using Moq; using Xunit; @@ -598,6 +600,47 @@ public async Task PartialReadAsyncThenSeekReplaysBuffer() Assert.Equal(data.AsMemory(0, read2).ToArray(), buffer2.AsMemory(0, read2).ToArray()); } + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")] + public void Read_BufferingContentToDisk_CreatesFileWithUserOnlyUnixFileMode() + { + var inner = MakeStream(1024 * 2); + string tempFileName; + using (var stream = new FileBufferingReadStream(inner, 1024, null, GetCurrentDirectory())) + { + var bytes = new byte[1024 * 2]; + var read0 = stream.Read(bytes, 0, bytes.Length); + Assert.Equal(bytes.Length, read0); + Assert.Equal(read0, stream.Length); + Assert.Equal(read0, stream.Position); + Assert.False(stream.InMemory); + Assert.NotNull(stream.TempFileName); + + var read1 = stream.Read(bytes, 0, bytes.Length); + Assert.Equal(0, read1); + + tempFileName = stream.TempFileName!; + Assert.True(File.Exists(tempFileName)); + + //Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(tempFileName)); + var processStartInfo = new ProcessStartInfo + { + FileName = "ls", + Arguments = $"-l {tempFileName}", + RedirectStandardOutput = true, + UseShellExecute = false + }; + var process = Process.Start(processStartInfo); + + Assert.NotNull(process); + var output = process!.StandardOutput.ReadToEnd(); + process.WaitForExit(); + Assert.StartsWith("-rw-------", output); + } + + Assert.False(File.Exists(tempFileName)); + } + private static string GetCurrentDirectory() { return AppContext.BaseDirectory; diff --git a/src/Http/WebUtilities/test/FileBufferingWriteStreamTests.cs b/src/Http/WebUtilities/test/FileBufferingWriteStreamTests.cs index 9459a192959d..3e326d267bc2 100644 --- a/src/Http/WebUtilities/test/FileBufferingWriteStreamTests.cs +++ b/src/Http/WebUtilities/test/FileBufferingWriteStreamTests.cs @@ -8,7 +8,9 @@ using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; +using Microsoft.AspNetCore.Testing; using Xunit; +using System.Diagnostics; namespace Microsoft.AspNetCore.WebUtilities { @@ -371,6 +373,37 @@ public async Task DrainBufferAsync_WithContentInDisk_CopiesContentFromMemoryStre Assert.Equal(0, bufferingStream.Length); } + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")] + public void Write_BufferingContentToDisk_CreatesFileWithUserOnlyUnixFileMode() + { + // Arrange + var input = new byte[] { 1, 2, 3, }; + using var bufferingStream = new FileBufferingWriteStream(memoryThreshold: 2, tempFileDirectoryAccessor: () => TempDirectory); + bufferingStream.Write(input, 0, 2); + + // Act + bufferingStream.Write(input, 2, 1); + + // Assert + Assert.NotNull(bufferingStream.FileStream); + + //Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(bufferingStream.FileStream.SafeFileHandle)); + var processStartInfo = new ProcessStartInfo + { + FileName = "ls", + Arguments = $"-l {bufferingStream.FileStream!.Name}", + RedirectStandardOutput = true, + UseShellExecute = false + }; + var process = Process.Start(processStartInfo); + + Assert.NotNull(process); + var output = process!.StandardOutput.ReadToEnd(); + process.WaitForExit(); + Assert.StartsWith("-rw-------", output); + } + public void Dispose() { try diff --git a/src/Shared/CertificateGeneration/CertificateManager.cs b/src/Shared/CertificateGeneration/CertificateManager.cs index 987db2bba031..1e4295ca1dd2 100644 --- a/src/Shared/CertificateGeneration/CertificateManager.cs +++ b/src/Shared/CertificateGeneration/CertificateManager.cs @@ -7,6 +7,7 @@ using System.Diagnostics.Tracing; using System.IO; using System.Linq; +using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text; @@ -539,6 +540,14 @@ internal void ExportCertificate(X509Certificate2 certificate, string path, bool try { Log.WriteCertificateToDisk(path); + + // Create a temp file with the correct Unix file mode before moving it to the expected path. + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var tempFilename = Path.GetTempFileName(); + File.Move(tempFilename, path, overwrite: true); + } + File.WriteAllBytes(path, bytes); } catch (Exception ex) when (Log.IsEnabled()) @@ -559,6 +568,14 @@ internal void ExportCertificate(X509Certificate2 certificate, string path, bool { var keyPath = Path.ChangeExtension(path, ".key"); Log.WritePemKeyToDisk(keyPath); + + // Create a temp file with the correct Unix file mode before moving it to the expected path. + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var tempFilename = Path.GetTempFileName(); + File.Move(tempFilename, keyPath, overwrite: true); + } + File.WriteAllBytes(keyPath, pemEnvelope); } catch (Exception ex) when (Log.IsEnabled()) diff --git a/src/Tools/FirstRunCertGenerator/test/CertificateManagerTests.cs b/src/Tools/FirstRunCertGenerator/test/CertificateManagerTests.cs index 297d7a13da9e..d406d8bf940d 100644 --- a/src/Tools/FirstRunCertGenerator/test/CertificateManagerTests.cs +++ b/src/Tools/FirstRunCertGenerator/test/CertificateManagerTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -419,6 +420,51 @@ public void ListCertificates_AlwaysReturnsTheCertificate_WithHighestVersion() e.Oid.Value == "1.3.6.1.4.1.311.84.1.1" && e.RawData[0] == 1); } + + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")] + [OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "https://github.com/dotnet/aspnetcore/issues/6720")] + public void EnsureCreateHttpsCertificate_CreatesFilesWithUserOnlyUnixFileMode() + { + _fixture.CleanupCertificates(); + + const string CertificateName = nameof(EnsureCreateHttpsCertificate_CreatesFilesWithUserOnlyUnixFileMode) + ".pem"; + const string KeyName = nameof(EnsureCreateHttpsCertificate_CreatesFilesWithUserOnlyUnixFileMode) + ".key"; + + var certificatePassword = Guid.NewGuid().ToString(); + var now = DateTimeOffset.UtcNow; + now = new DateTimeOffset(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, 0, now.Offset); + + var result = _manager + .EnsureAspNetCoreHttpsDevelopmentCertificate(now, now.AddYears(1), CertificateName, trust: false, includePrivateKey: true, password: certificatePassword, keyExportFormat: CertificateKeyExportFormat.Pem, isInteractive: false); + + Assert.Equal(EnsureCertificateResult.Succeeded, result); + + Assert.True(File.Exists(CertificateName)); + //Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(CertificateName)); + AssertFileMode(CertificateName, "-rw-------"); + + Assert.True(File.Exists(KeyName)); + //Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(KeyName)); + AssertFileMode(KeyName, "-rw-------"); + } + + private static void AssertFileMode(string path, string fileMode) + { + var processStartInfo = new ProcessStartInfo + { + FileName = "ls", + Arguments = $"-l {path}", + RedirectStandardOutput = true, + UseShellExecute = false + }; + var process = Process.Start(processStartInfo); + + Assert.NotNull(process); + var output = process!.StandardOutput.ReadToEnd(); + process.WaitForExit(); + Assert.StartsWith(fileMode, output); + } } public class CertFixture : IDisposable diff --git a/src/Tools/dotnet-user-secrets/src/Internal/SecretsStore.cs b/src/Tools/dotnet-user-secrets/src/Internal/SecretsStore.cs index a2d3bb40b166..5648f643ce5a 100644 --- a/src/Tools/dotnet-user-secrets/src/Internal/SecretsStore.cs +++ b/src/Tools/dotnet-user-secrets/src/Internal/SecretsStore.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.UserSecrets; @@ -46,6 +47,9 @@ public string this[string key] public int Count => _secrets.Count; + // For testing. + internal string SecretsFilePath => _secretsFilePath; + public bool ContainsKey(string key) => _secrets.ContainsKey(key); public IEnumerable> AsEnumerable() => _secrets; @@ -75,6 +79,13 @@ public virtual void Save() } } + // Create a temp file with the correct Unix file mode before moving it to the expected _filePath. + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var tempFilename = Path.GetTempFileName(); + File.Move(tempFilename, _secretsFilePath, overwrite: true); + } + File.WriteAllText(_secretsFilePath, contents.ToString(), Encoding.UTF8); } diff --git a/src/Tools/dotnet-user-secrets/src/Program.cs b/src/Tools/dotnet-user-secrets/src/Program.cs index b939a4798e76..be8eb3185bd4 100644 --- a/src/Tools/dotnet-user-secrets/src/Program.cs +++ b/src/Tools/dotnet-user-secrets/src/Program.cs @@ -29,6 +29,9 @@ public Program(IConsole console, string workingDirectory) _workingDirectory = workingDirectory; } + // For testing. + internal string SecretsFilePath { get; private set; } + public bool TryRun(string[] args, out int returnCode) { try @@ -91,6 +94,10 @@ internal int RunInternal(params string[] args) var store = new SecretsStore(userSecretsId, reporter); var context = new Internal.CommandContext(store, reporter, _console); options.Command.Execute(context); + + // For testing. + SecretsFilePath = store.SecretsFilePath; + return 0; } diff --git a/src/Tools/dotnet-user-secrets/test/SecretManagerTests.cs b/src/Tools/dotnet-user-secrets/test/SecretManagerTests.cs index 515cff54bd7a..e08f36ac278a 100644 --- a/src/Tools/dotnet-user-secrets/test/SecretManagerTests.cs +++ b/src/Tools/dotnet-user-secrets/test/SecretManagerTests.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Globalization; using System.IO; using System.Text; @@ -338,5 +339,32 @@ public void Init_When_Project_Has_No_Secrets_Id() Assert.DoesNotContain(Resources.FormatError_ProjectMissingId(project), _console.GetOutput()); Assert.DoesNotContain("--help", _console.GetOutput()); } + + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")] + public void SetSecrets_CreatesFileWithUserOnlyUnixFileMode() + { + var projectPath = _fixture.GetTempSecretProject(); + var secretManager = new Program(_console, projectPath); + + secretManager.RunInternal("set", "key1", Guid.NewGuid().ToString(), "--verbose"); + + Assert.NotNull(secretManager.SecretsFilePath); + + //Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(secretManager.SecretsFilePath)); + var processStartInfo = new ProcessStartInfo + { + FileName = "ls", + Arguments = $"-l {secretManager.SecretsFilePath}", + RedirectStandardOutput = true, + UseShellExecute = false + }; + var process = Process.Start(processStartInfo); + + Assert.NotNull(process); + var output = process!.StandardOutput.ReadToEnd(); + process.WaitForExit(); + Assert.StartsWith("-rw-------", output); + } } } From 69640798bf659838a61923d1f0e35837344ba8f7 Mon Sep 17 00:00:00 2001 From: Safia Abdalla Date: Tue, 13 Sep 2022 13:25:19 -0700 Subject: [PATCH 18/37] [release/6.0] Backport localizations for UseProgramMain string (#43803) * Backport localizations for UseProgramMain string * Fix key naming pattern --- .../.template.config/cs-CZ/strings.json | 4 +++- .../.template.config/de-DE/strings.json | 4 +++- .../.template.config/es-ES/strings.json | 4 +++- .../.template.config/fr-FR/strings.json | 4 +++- .../.template.config/it-IT/strings.json | 4 +++- .../.template.config/ja-JP/strings.json | 4 +++- .../.template.config/ko-KR/strings.json | 4 +++- .../.template.config/pl-PL/strings.json | 4 +++- .../.template.config/pt-BR/strings.json | 4 +++- .../.template.config/ru-RU/strings.json | 4 +++- .../.template.config/tr-TR/strings.json | 4 +++- .../.template.config/zh-CN/strings.json | 4 +++- .../.template.config/zh-TW/strings.json | 4 +++- .../.template.config/cs-CZ/strings.json | 4 +++- .../.template.config/de-DE/strings.json | 4 +++- .../.template.config/es-ES/strings.json | 4 +++- .../.template.config/fr-FR/strings.json | 4 +++- .../.template.config/it-IT/strings.json | 4 +++- .../.template.config/ja-JP/strings.json | 4 +++- .../.template.config/ko-KR/strings.json | 4 +++- .../.template.config/pl-PL/strings.json | 4 +++- .../.template.config/pt-BR/strings.json | 4 +++- .../.template.config/ru-RU/strings.json | 4 +++- .../.template.config/tr-TR/strings.json | 4 +++- .../.template.config/zh-CN/strings.json | 4 +++- .../.template.config/zh-TW/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/cs-CZ/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/de-DE/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/es-ES/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/fr-FR/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/it-IT/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/ja-JP/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/ko-KR/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/pl-PL/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/pt-BR/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/ru-RU/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/tr-TR/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/zh-CN/strings.json | 4 +++- .../EmptyWeb-CSharp/.template.config/zh-TW/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/cs-CZ/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/de-DE/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/es-ES/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/fr-FR/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/it-IT/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/ja-JP/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/ko-KR/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/pl-PL/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/pt-BR/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/ru-RU/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/tr-TR/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/zh-CN/strings.json | 4 +++- .../EmptyWeb-FSharp/.template.config/zh-TW/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/cs-CZ/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/de-DE/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/es-ES/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/fr-FR/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/it-IT/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/ja-JP/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/ko-KR/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/pl-PL/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/pt-BR/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/ru-RU/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/tr-TR/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/zh-CN/strings.json | 4 +++- .../GrpcService-CSharp/.template.config/zh-TW/strings.json | 4 +++- .../.template.config/cs-CZ/strings.json | 4 +++- .../.template.config/de-DE/strings.json | 4 +++- .../.template.config/es-ES/strings.json | 4 +++- .../.template.config/fr-FR/strings.json | 4 +++- .../.template.config/it-IT/strings.json | 4 +++- .../.template.config/ja-JP/strings.json | 4 +++- .../.template.config/ko-KR/strings.json | 4 +++- .../.template.config/pl-PL/strings.json | 4 +++- .../.template.config/pt-BR/strings.json | 4 +++- .../.template.config/ru-RU/strings.json | 4 +++- .../.template.config/tr-TR/strings.json | 4 +++- .../.template.config/zh-CN/strings.json | 4 +++- .../.template.config/zh-TW/strings.json | 4 +++- .../.template.config/cs-CZ/strings.json | 4 +++- .../.template.config/de-DE/strings.json | 4 +++- .../.template.config/es-ES/strings.json | 4 +++- .../.template.config/fr-FR/strings.json | 4 +++- .../.template.config/it-IT/strings.json | 4 +++- .../.template.config/ja-JP/strings.json | 4 +++- .../.template.config/ko-KR/strings.json | 4 +++- .../.template.config/pl-PL/strings.json | 4 +++- .../.template.config/pt-BR/strings.json | 4 +++- .../.template.config/ru-RU/strings.json | 4 +++- .../.template.config/tr-TR/strings.json | 4 +++- .../.template.config/zh-CN/strings.json | 4 +++- .../.template.config/zh-TW/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/cs-CZ/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/de-DE/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/es-ES/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/fr-FR/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/it-IT/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/ja-JP/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/ko-KR/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/pl-PL/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/pt-BR/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/ru-RU/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/tr-TR/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/zh-CN/strings.json | 4 +++- .../RazorPagesWeb-CSharp/.template.config/zh-TW/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/cs-CZ/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/de-DE/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/es-ES/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/fr-FR/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/it-IT/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/ja-JP/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/ko-KR/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/pl-PL/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/pt-BR/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/ru-RU/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/tr-TR/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/zh-CN/strings.json | 4 +++- .../StarterWeb-CSharp/.template.config/zh-TW/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/cs-CZ/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/de-DE/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/es-ES/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/fr-FR/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/it-IT/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/ja-JP/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/ko-KR/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/pl-PL/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/pt-BR/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/ru-RU/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/tr-TR/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/zh-CN/strings.json | 4 +++- .../content/WebApi-CSharp/.template.config/zh-TW/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/cs-CZ/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/de-DE/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/es-ES/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/fr-FR/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/it-IT/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/ja-JP/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/ko-KR/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/pl-PL/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/pt-BR/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/ru-RU/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/tr-TR/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/zh-CN/strings.json | 4 +++- .../content/WebApi-FSharp/.template.config/zh-TW/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/cs-CZ/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/de-DE/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/es-ES/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/fr-FR/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/it-IT/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/ja-JP/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/ko-KR/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/pl-PL/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/pt-BR/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/ru-RU/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/tr-TR/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/zh-CN/strings.json | 4 +++- .../content/Worker-CSharp/.template.config/zh-TW/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/cs-CZ/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/de-DE/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/es-ES/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/fr-FR/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/it-IT/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/ja-JP/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/ko-KR/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/pl-PL/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/pt-BR/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/ru-RU/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/tr-TR/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/zh-CN/strings.json | 4 +++- .../content/Worker-FSharp/.template.config/zh-TW/strings.json | 4 +++- 169 files changed, 507 insertions(+), 169 deletions(-) diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/cs-CZ/strings.json index 6bc6fe568bbc..49a7ea5459c2 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplikace Blazor Server", - "description": "Šablona projektu pro vytvoření aplikace Blazor Server, která běží na straně serveru uvnitř aplikace ASP.NET Core a zpracovává interakce uživatele přes připojení SignalR. Tato šablona se dá využít pro webové aplikace s propracovanými dynamickými uživatelskými rozhraními (UI)." + "description": "Šablona projektu pro vytvoření aplikace Blazor Server, která běží na straně serveru uvnitř aplikace ASP.NET Core a zpracovává interakce uživatele přes připojení SignalR. Tato šablona se dá využít pro webové aplikace s propracovanými dynamickými uživatelskými rozhraními (UI).", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/de-DE/strings.json index b2bef04f9e58..d762a9855a16 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor Server-App", - "description": "Eine Projektvorlage für das Erstellen einer Blazor Server-App, die serverseitig innerhalb einer ASP.NET Core-App ausgeführt wird und die Benutzerinteraktionen über eine SignalR-Verbindung verarbeitet. Diese Vorlage kann für Web-Apps mit umfangreichen dynamischen Benutzeroberflächen verwendet werden." + "description": "Eine Projektvorlage für das Erstellen einer Blazor Server-App, die serverseitig innerhalb einer ASP.NET Core-App ausgeführt wird und die Benutzerinteraktionen über eine SignalR-Verbindung verarbeitet. Diese Vorlage kann für Web-Apps mit umfangreichen dynamischen Benutzeroberflächen verwendet werden.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/es-ES/strings.json index 668e7ec0adcf..eb97df09336c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplicación Blazor Server", - "description": "Plantilla de proyecto para crear una aplicación Blazor Server que se ejecuta del lado servidor dentro de una aplicación de ASP.NET Core y controla las interacciones de los usuarios a través de una conexión de SignalR. Esta plantilla se puede usar para las aplicaciones web con interfaces de usuario dinámicas enriquecidas." + "description": "Plantilla de proyecto para crear una aplicación Blazor Server que se ejecuta del lado servidor dentro de una aplicación de ASP.NET Core y controla las interacciones de los usuarios a través de una conexión de SignalR. Esta plantilla se puede usar para las aplicaciones web con interfaces de usuario dinámicas enriquecidas.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/fr-FR/strings.json index 4f0813a30f66..55151234d66c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Application Blazor Server", - "description": "Modèle de projet permettant de créer une application Blazor Server qui s'exécute côté serveur dans une application ASP.NET Core, et qui gère les interactions utilisateur via une connexion SignalR. Vous pouvez utiliser ce modèle pour les applications web ayant des IU (interfaces utilisateur) dynamiques riches." + "description": "Modèle de projet permettant de créer une application Blazor Server qui s'exécute côté serveur dans une application ASP.NET Core, et qui gère les interactions utilisateur via une connexion SignalR. Vous pouvez utiliser ce modèle pour les applications web ayant des IU (interfaces utilisateur) dynamiques riches.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/it-IT/strings.json index 08b8d667bf6b..3f6fcb5b0c5f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "App Blazor Server", - "description": "Modello di progetto per la creazione di un'app Blazor Server che viene eseguita lato server all'interno di un'app ASP.NET Core e gestisce le interazioni utente in una connessione SignalR. Questo modello può essere usato per app Web con interfacce utente dinamiche." + "description": "Modello di progetto per la creazione di un'app Blazor Server che viene eseguita lato server all'interno di un'app ASP.NET Core e gestisce le interazioni utente in una connessione SignalR. Questo modello può essere usato per app Web con interfacce utente dinamiche.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ja-JP/strings.json index 392174b1c2f9..1f9168c91c78 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor Server アプリ", - "description": "ASP.NET Core アプリ内のサーバー側で実行され、SignalR 接続を介してユーザー操作を処理する Blazor Server アプリを作成するためのプロジェクト テンプレート。このテンプレートは、高度でダイナミックなユーザー インターフェイス (UI) を備えた Web アプリに使用できます。" + "description": "ASP.NET Core アプリ内のサーバー側で実行され、SignalR 接続を介してユーザー操作を処理する Blazor Server アプリを作成するためのプロジェクト テンプレート。このテンプレートは、高度でダイナミックなユーザー インターフェイス (UI) を備えた Web アプリに使用できます。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ko-KR/strings.json index dc7f47bd548f..6b8e499adcd6 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor Server 앱", - "description": "ASP.NET Core 앱 내에서 서버 쪽을 실행하고 SignalR 연결을 통해 사용자 상호 작용을 처리하는 Blazor Server 앱을 만드는 데 사용되는 프로젝트 템플릿입니다. 이 템플릿을 사용하여 다양한 동적 UI(사용자 인터페이스)가 포함된 웹앱을 만들 수 있습니다." + "description": "ASP.NET Core 앱 내에서 서버 쪽을 실행하고 SignalR 연결을 통해 사용자 상호 작용을 처리하는 Blazor Server 앱을 만드는 데 사용되는 프로젝트 템플릿입니다. 이 템플릿을 사용하여 다양한 동적 UI(사용자 인터페이스)가 포함된 웹앱을 만들 수 있습니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/pl-PL/strings.json index da4098435bb9..f2f9305fe556 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplikacja Blazor Server", - "description": "Szablon projektu służący do tworzenia aplikacji Blazor Server działającej po stronie serwera wewnątrz aplikacji platformy ASP.NET Core i obsługującej interakcje z użytkownikami za pośrednictwem połączenia SignalR. Ten szablon może być używany dla aplikacji internetowych z rozbudowanymi, dynamicznymi interfejsami użytkowników." + "description": "Szablon projektu służący do tworzenia aplikacji Blazor Server działającej po stronie serwera wewnątrz aplikacji platformy ASP.NET Core i obsługującej interakcje z użytkownikami za pośrednictwem połączenia SignalR. Ten szablon może być używany dla aplikacji internetowych z rozbudowanymi, dynamicznymi interfejsami użytkowników.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/pt-BR/strings.json index afe4215367d2..267daf551844 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplicativo Blazor Server", - "description": "Um modelo de projeto para criar um aplicativo Blazor Server que é executado do lado do servidor em um aplicativo ASP.NET Core e manipula as interações com o usuário em uma conexão SignalR. Esse modelo pode ser usado para aplicativos Web com UIs (interfaces do usuário) completas e dinâmicas." + "description": "Um modelo de projeto para criar um aplicativo Blazor Server que é executado do lado do servidor em um aplicativo ASP.NET Core e manipula as interações com o usuário em uma conexão SignalR. Esse modelo pode ser usado para aplicativos Web com UIs (interfaces do usuário) completas e dinâmicas.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ru-RU/strings.json index 40d1fe74b89b..ad50de55bc53 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Приложение Blazor Server", - "description": "Шаблон проекта для создания серверного приложения Blazor Server, которое запускается на стороне сервера в приложении ASP.NET Core и обрабатывает взаимодействие с пользователем через подключение SignalR. Этот шаблон можно использовать для веб-приложений с полнофункциональными динамическими пользовательскими интерфейсами." + "description": "Шаблон проекта для создания серверного приложения Blazor Server, которое запускается на стороне сервера в приложении ASP.NET Core и обрабатывает взаимодействие с пользователем через подключение SignalR. Этот шаблон можно использовать для веб-приложений с полнофункциональными динамическими пользовательскими интерфейсами.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/tr-TR/strings.json index 36821de2c05c..40f3f08c5f68 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor Server Uygulaması", - "description": "Bir ASP.NET Core uygulaması içinde sunucu tarafında çalışan ve bir SignalR bağlantısı üzerinden kullanıcı etkileşimlerini işleyen bir Blazor Server uygulaması oluşturmaya yönelik proje şablonu. Bu şablon, zengin dinamik kullanıcı arabirimlerine (UI) sahip web uygulamaları için kullanılabilir." + "description": "Bir ASP.NET Core uygulaması içinde sunucu tarafında çalışan ve bir SignalR bağlantısı üzerinden kullanıcı etkileşimlerini işleyen bir Blazor Server uygulaması oluşturmaya yönelik proje şablonu. Bu şablon, zengin dinamik kullanıcı arabirimlerine (UI) sahip web uygulamaları için kullanılabilir.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/zh-CN/strings.json index 168305c0b58e..ab64e9c297cc 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor Server 应用", - "description": "用于创建 Blazor Server 应用的项目模板,该应用会在 ASP.NET Core 应用内运行服务器端并对通过 SignalR 连接进行用户交互进行处理。此模板可用于具有丰富动态用户界面(UI)的 Web 应用。" + "description": "用于创建 Blazor Server 应用的项目模板,该应用会在 ASP.NET Core 应用内运行服务器端并对通过 SignalR 连接进行用户交互进行处理。此模板可用于具有丰富动态用户界面(UI)的 Web 应用。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/zh-TW/strings.json index a405138873a3..8899fee785f5 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor Server 應用程式", - "description": "用來建立 Blazor Server 應用程式的專案範本,該應用程式會在 ASP.NET Core 應用程式內執行伺服器端,並透過 SignalR 連線處理使用者互動。Web 應用程式具有豐富且動態的使用者介面 (UI) 時,此範本最適用。" + "description": "用來建立 Blazor Server 應用程式的專案範本,該應用程式會在 ASP.NET Core 應用程式內執行伺服器端,並透過 SignalR 連線處理使用者互動。Web 應用程式具有豐富且動態的使用者介面 (UI) 時,此範本最適用。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/cs-CZ/strings.json index 23ed3d8c14e8..5f4f7fea4e50 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/cs-CZ/strings.json @@ -4,6 +4,8 @@ "name": "Aplikace Blazor WebAssembly", "description": "Šablona projektu pro vytvoření aplikace Blazor, která běží ve WebAssembly a dá se volitelně hostovat v aplikaci ASP.NET. Tato šablona se dá použít pro webové aplikace s propracovanými dynamickými uživatelskými rozhraními (UI).", "parameter.Hosted.name": "_Hostováno pomocí ASP.NET Core", - "parameter.PWA.name": "_Progresivní webová aplikace" + "parameter.PWA.name": "_Progresivní webová aplikace", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/de-DE/strings.json index 8997ad2889ef..a4b51b9b196e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/de-DE/strings.json @@ -4,6 +4,8 @@ "name": "Blazor-WebAssembly-App", "description": "Eine Projektvorlage zum Erstellen einer Blazor-App, die auf WebAssembly ausgeführt und optional durch eine ASP.NET Core-App gehostet wird. Diese Vorlage kann für Web-Apps mit umfangreichen dynamischen Benutzeroberflächen verwendet werden.", "parameter.Hosted.name": "ASP.NET Core, _gehostet", - "parameter.PWA.name": "_Progressive Webanwendung" + "parameter.PWA.name": "_Progressive Webanwendung", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/es-ES/strings.json index 8d9b78b93dff..66484b1d4b72 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/es-ES/strings.json @@ -4,6 +4,8 @@ "name": "Aplicación Blazor para WebAssembly", "description": "Plantilla de proyecto para crear una aplicación Blazor que se ejecuta en WebAssembly y que se hospeda de forma opcional en una aplicación de ASP.NET Core. Esta plantilla se puede usar para las aplicaciones web con interfaces de usuario dinámicas enriquecidas (IU).", "parameter.Hosted.name": "ASP.NET Core _hospedado", - "parameter.PWA.name": "Aplicación _web progresiva" + "parameter.PWA.name": "Aplicación _web progresiva", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/fr-FR/strings.json index 3b0f9c88b723..857103d2d70c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/fr-FR/strings.json @@ -4,6 +4,8 @@ "name": "Application WebAssembly Blazor", "description": "Modèle de projet permettant de créer une application Blazor qui s'exécute sur WebAssembly et qui est éventuellement hébergée par une application ASP.NET Core. Vous pouvez utiliser ce modèle pour les applications web ayant des IU (interfaces utilisateur) dynamiques riches.", "parameter.Hosted.name": "_Hébergé sur ASP.NET Core", - "parameter.PWA.name": "_Application web progressive" + "parameter.PWA.name": "_Application web progressive", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/it-IT/strings.json index 8ebc2f8bb73e..4cc82a6f5834 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/it-IT/strings.json @@ -4,6 +4,8 @@ "name": "App WebAssembly Blazor", "description": "Modello di progetto per la creazione di un'app Blazor eseguita in WebAssembly e ospitata facoltativamente da un'app ASP.NET Core. Questo modello può essere usato per app Web con interfacce utente dinamiche.", "parameter.Hosted.name": "ASP.NET Core _ospitato", - "parameter.PWA.name": "Applicazione Web _progressiva" + "parameter.PWA.name": "Applicazione Web _progressiva", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ja-JP/strings.json index 553988d61167..13786ae3fa65 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ja-JP/strings.json @@ -4,6 +4,8 @@ "name": "Blazor WebAssembly アプリ", "description": "WebAssembly 上で実行され、オプションで ASP.NET Core アプリによってホストされる Blazor アプリを作成するためのプロジェクト テンプレート。このテンプレートは、機能豊富で動的なユーザー インターフェイス (UI) を備えた Web アプリに使用できます。", "parameter.Hosted.name": "ASP.NET Core でホストされた(_h)", - "parameter.PWA.name": "プログレッシブ Web アプリケーション(_P)" + "parameter.PWA.name": "プログレッシブ Web アプリケーション(_P)", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ko-KR/strings.json index 5cd1f22c97d6..c425c2364f06 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ko-KR/strings.json @@ -4,6 +4,8 @@ "name": "Blazor WebAssembly 앱", "description": "WebAssembly에서 실행되고 ASP.NET Core 앱에서 선택적으로 호스트되는 Blazor 앱을 만들기 위한 프로젝트 템플릿입니다. 이 템플릿은 다양한 동적 UI(사용자 인터페이스)를 포함하는 웹앱에 사용할 수 있습니다.", "parameter.Hosted.name": "ASP.NET Core 호스팅(_H)", - "parameter.PWA.name": "프로그레시브 웹 애플리케이션(_P)" + "parameter.PWA.name": "프로그레시브 웹 애플리케이션(_P)", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/pl-PL/strings.json index 939dedccad5e..966e51e7dbff 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/pl-PL/strings.json @@ -4,6 +4,8 @@ "name": "Aplikacja zestawu WebAssembly platformy Blazor", "description": "Szablon projektu służący do tworzenia aplikacji platformy Blazor, która działa w formacie WebAssembly i jest opcjonalnie hostowana przez aplikację platformy ASP.NET Core. Tego szablonu można używać dla aplikacji internetowych z rozbudowanymi dynamicznymi interfejsami użytkownika.", "parameter.Hosted.name": "_Hostowane na platformie ASP.NET Core", - "parameter.PWA.name": "_Progresywna aplikacja internetowa" + "parameter.PWA.name": "_Progresywna aplikacja internetowa", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/pt-BR/strings.json index 3821b89d8ed7..822d2d8eb8e8 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/pt-BR/strings.json @@ -4,6 +4,8 @@ "name": "Aplicativo Blazor no WebAssembly", "description": "Um modelo de projeto para criar um aplicativo Blazor que é executado no WebAssembly e, opcionalmente, é hospedado por um aplicativo ASP.NET Core. Esse modelo pode ser usado para aplicativos Web com IUs (interfaces do usuário) completas e dinâmicas.", "parameter.Hosted.name": "_hospedado no ASP.NET Core", - "parameter.PWA.name": "Aplicativo Web _progressivo" + "parameter.PWA.name": "Aplicativo Web _progressivo", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ru-RU/strings.json index cac0eb7c7ed4..f09272bf45fb 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/ru-RU/strings.json @@ -4,6 +4,8 @@ "name": "Приложение WebAssembly Blazor", "description": "Шаблон проекта для создания приложения Blazor, которое запускается в WebAssembly и может размещаться в приложении ASP.NET Core. Этот шаблон можно использовать для веб-приложений с расширенными динамическими пользовательскими интерфейсами (UI).", "parameter.Hosted.name": "С _размещением в ASP.NET Core", - "parameter.PWA.name": "_Прогрессивное веб-приложение" + "parameter.PWA.name": "_Прогрессивное веб-приложение", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/tr-TR/strings.json index 51d93c62fd05..9455f5243553 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/tr-TR/strings.json @@ -4,6 +4,8 @@ "name": "Blazor WebAssembly Uygulaması", "description": "WebAssembly üzerinde çalışan ve isteğe bağlı olarak bir ASP.NET Core uygulamasında barındırılan Blazor uygulaması oluşturmaya yönelik proje şablonu. Bu şablon, zengin dinamik kullanıcı arabirimlerine (UI) sahip web uygulamaları için kullanılabilir.", "parameter.Hosted.name": "ASP.NET Core tarafından _barındırılan", - "parameter.PWA.name": "_Aşamalı Web Uygulaması" + "parameter.PWA.name": "_Aşamalı Web Uygulaması", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/zh-CN/strings.json index b216681d3bbe..b327db5b6ecf 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/zh-CN/strings.json @@ -4,6 +4,8 @@ "name": "Blazor WebAssembly 应用", "description": "用于创建 Blazor 应用的项目模板,该应用在 WebAssembly 上运行且可选择由 ASP.NET Core 应用托管。此模板可用于具有丰富动态用户界面(UI)的 Web 应用。", "parameter.Hosted.name": "ASP.NET Core 托管(_H)", - "parameter.PWA.name": "渐进式 Web 应用程序(_P)" + "parameter.PWA.name": "渐进式 Web 应用程序(_P)", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/zh-TW/strings.json index 0329e220a5be..252a5dc377d5 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/.template.config/zh-TW/strings.json @@ -4,6 +4,8 @@ "name": "Blazor WebAssembly 應用程式", "description": "此專案範本可用於建立在 WebAssembly 上執行的 Blazor 應用程式,並可選擇是否要裝載在 ASP.NET Core 應用程式上。此範本可供搭載豐富動態使用者介面 (UI) 的 Web 應用程式使用。", "parameter.Hosted.name": "裝載在 ASP.NET Core 上(_H)", - "parameter.PWA.name": "漸進式 Web 應用程式(_P)" + "parameter.PWA.name": "漸進式 Web 應用程式(_P)", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/cs-CZ/strings.json index 92ce91c58c1a..e1d481921766 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core (prázdné)", - "description": "Prázdná šablona projektu pro vytvoření aplikace ASP.NET Core. V této šabloně není žádný obsah." + "description": "Prázdná šablona projektu pro vytvoření aplikace ASP.NET Core. V této šabloně není žádný obsah.", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/de-DE/strings.json index 67351092991a..708234f228fe 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core leer", - "description": "Eine leere Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung. Diese Vorlage umfasst keine Inhalte." + "description": "Eine leere Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung. Diese Vorlage umfasst keine Inhalte.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/es-ES/strings.json index 58c810b32812..9e4c2cc667fb 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core vacío", - "description": "Una plantilla de proyecto vacía para crear una aplicación ASP.NET Core. Esta plantilla no incluye ningún contenido." + "description": "Una plantilla de proyecto vacía para crear una aplicación ASP.NET Core. Esta plantilla no incluye ningún contenido.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/fr-FR/strings.json index 088a0a37d4ba..7855ffc17819 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core vide", - "description": "Modèle de projet vide pour la création d'une application ASP.NET Core. Ce modèle n'a aucun contenu." + "description": "Modèle de projet vide pour la création d'une application ASP.NET Core. Ce modèle n'a aucun contenu.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/it-IT/strings.json index c5aebd8a4437..e173d49eb031 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Progetto ASP.NET Core vuoto", - "description": "Modello di progetto vuoto per la creazione di un'applicazione ASP.NET Core. Questo modello non include alcun contenuto." + "description": "Modello di progetto vuoto per la creazione di un'applicazione ASP.NET Core. Questo modello non include alcun contenuto.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ja-JP/strings.json index 618e4c1fee27..0aac238d1c81 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core (空)", - "description": "ASP.NET Core アプリケーションを作成するための空のプロジェクト テンプレートです。このテンプレートにはコンテンツが一切含まれていません。" + "description": "ASP.NET Core アプリケーションを作成するための空のプロジェクト テンプレートです。このテンプレートにはコンテンツが一切含まれていません。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ko-KR/strings.json index 12c77a8a4f25..6d2a8f20cc3b 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core 비어 있음", - "description": "ASP.NET Core 애플리케이션을 만들기 위한 빈 프로젝트 템플릿입니다. 이 템플릿에는 내용이 없습니다." + "description": "ASP.NET Core 애플리케이션을 만들기 위한 빈 프로젝트 템플릿입니다. 이 템플릿에는 내용이 없습니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/pl-PL/strings.json index e8e3ba977773..c728817ece99 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core — puste", - "description": "Pusty szablon projektu służący do tworzenia aplikacji platformy ASP.NET Core. Ten szablon nie ma żadnej zawartości." + "description": "Pusty szablon projektu służący do tworzenia aplikacji platformy ASP.NET Core. Ten szablon nie ma żadnej zawartości.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/pt-BR/strings.json index 2c3afc1da3d6..89ab4937befa 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Vazio", - "description": "Um modelo de projeto vazio para a criação de um aplicativo ASP.NET Core. Esse modelo não tem nenhum conteúdo." + "description": "Um modelo de projeto vazio para a criação de um aplicativo ASP.NET Core. Esse modelo não tem nenhum conteúdo.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ru-RU/strings.json index 9c688d0dae19..6c062f4f8df3 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Пустой ASP.NET Core", - "description": "Пустой шаблон проекта для создания приложения ASP.NET Core. Этот шаблон не имеет содержимого." + "description": "Пустой шаблон проекта для создания приложения ASP.NET Core. Этот шаблон не имеет содержимого.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/tr-TR/strings.json index 948c8f1cb9d1..ca20aaf48552 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Boş", - "description": "ASP.NET Core uygulaması oluşturmaya yönelik boş bir proje şablonu. Bu şablonda içerik yoktur." + "description": "ASP.NET Core uygulaması oluşturmaya yönelik boş bir proje şablonu. Bu şablonda içerik yoktur.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/zh-CN/strings.json index 1d3d2da1db6d..818d761eae46 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core 空", - "description": "用于创建 ASP.NET Core 应用程序的空项目模板。此模板中没有任何内容。" + "description": "用于创建 ASP.NET Core 应用程序的空项目模板。此模板中没有任何内容。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/zh-TW/strings.json index cf146f3230b4..0f6b32eed3cb 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "空的 ASP.NET Core", - "description": "可用於建立 ASP.NET Core 應用程式的空白專案範本。此範本不含任何內容。" + "description": "可用於建立 ASP.NET Core 應用程式的空白專案範本。此範本不含任何內容。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/cs-CZ/strings.json index 92ce91c58c1a..e1d481921766 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core (prázdné)", - "description": "Prázdná šablona projektu pro vytvoření aplikace ASP.NET Core. V této šabloně není žádný obsah." + "description": "Prázdná šablona projektu pro vytvoření aplikace ASP.NET Core. V této šabloně není žádný obsah.", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/de-DE/strings.json index 67351092991a..708234f228fe 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core leer", - "description": "Eine leere Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung. Diese Vorlage umfasst keine Inhalte." + "description": "Eine leere Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung. Diese Vorlage umfasst keine Inhalte.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/es-ES/strings.json index 58c810b32812..9e4c2cc667fb 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core vacío", - "description": "Una plantilla de proyecto vacía para crear una aplicación ASP.NET Core. Esta plantilla no incluye ningún contenido." + "description": "Una plantilla de proyecto vacía para crear una aplicación ASP.NET Core. Esta plantilla no incluye ningún contenido.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/fr-FR/strings.json index 088a0a37d4ba..7855ffc17819 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core vide", - "description": "Modèle de projet vide pour la création d'une application ASP.NET Core. Ce modèle n'a aucun contenu." + "description": "Modèle de projet vide pour la création d'une application ASP.NET Core. Ce modèle n'a aucun contenu.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/it-IT/strings.json index c5aebd8a4437..e173d49eb031 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Progetto ASP.NET Core vuoto", - "description": "Modello di progetto vuoto per la creazione di un'applicazione ASP.NET Core. Questo modello non include alcun contenuto." + "description": "Modello di progetto vuoto per la creazione di un'applicazione ASP.NET Core. Questo modello non include alcun contenuto.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ja-JP/strings.json index 618e4c1fee27..0aac238d1c81 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core (空)", - "description": "ASP.NET Core アプリケーションを作成するための空のプロジェクト テンプレートです。このテンプレートにはコンテンツが一切含まれていません。" + "description": "ASP.NET Core アプリケーションを作成するための空のプロジェクト テンプレートです。このテンプレートにはコンテンツが一切含まれていません。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ko-KR/strings.json index 12c77a8a4f25..6d2a8f20cc3b 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core 비어 있음", - "description": "ASP.NET Core 애플리케이션을 만들기 위한 빈 프로젝트 템플릿입니다. 이 템플릿에는 내용이 없습니다." + "description": "ASP.NET Core 애플리케이션을 만들기 위한 빈 프로젝트 템플릿입니다. 이 템플릿에는 내용이 없습니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/pl-PL/strings.json index e8e3ba977773..c728817ece99 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core — puste", - "description": "Pusty szablon projektu służący do tworzenia aplikacji platformy ASP.NET Core. Ten szablon nie ma żadnej zawartości." + "description": "Pusty szablon projektu służący do tworzenia aplikacji platformy ASP.NET Core. Ten szablon nie ma żadnej zawartości.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/pt-BR/strings.json index 2c3afc1da3d6..89ab4937befa 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Vazio", - "description": "Um modelo de projeto vazio para a criação de um aplicativo ASP.NET Core. Esse modelo não tem nenhum conteúdo." + "description": "Um modelo de projeto vazio para a criação de um aplicativo ASP.NET Core. Esse modelo não tem nenhum conteúdo.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ru-RU/strings.json index 9c688d0dae19..6c062f4f8df3 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Пустой ASP.NET Core", - "description": "Пустой шаблон проекта для создания приложения ASP.NET Core. Этот шаблон не имеет содержимого." + "description": "Пустой шаблон проекта для создания приложения ASP.NET Core. Этот шаблон не имеет содержимого.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/tr-TR/strings.json index 948c8f1cb9d1..ca20aaf48552 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Boş", - "description": "ASP.NET Core uygulaması oluşturmaya yönelik boş bir proje şablonu. Bu şablonda içerik yoktur." + "description": "ASP.NET Core uygulaması oluşturmaya yönelik boş bir proje şablonu. Bu şablonda içerik yoktur.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/zh-CN/strings.json index 1d3d2da1db6d..818d761eae46 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core 空", - "description": "用于创建 ASP.NET Core 应用程序的空项目模板。此模板中没有任何内容。" + "description": "用于创建 ASP.NET Core 应用程序的空项目模板。此模板中没有任何内容。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/zh-TW/strings.json index cf146f3230b4..0f6b32eed3cb 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "空的 ASP.NET Core", - "description": "可用於建立 ASP.NET Core 應用程式的空白專案範本。此範本不含任何內容。" + "description": "可用於建立 ASP.NET Core 應用程式的空白專案範本。此範本不含任何內容。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/cs-CZ/strings.json index 304e8a64df73..74489dab15c9 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Služba ASP.NET Core gRPC", - "description": "Šablona projektu pro vytvoření služby gRPC ASP.NET Core" + "description": "Šablona projektu pro vytvoření služby gRPC ASP.NET Core", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/de-DE/strings.json index afb20f4e8aff..6a3e3b12b155 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core-gRPC-Dienst", - "description": "Eine Projektvorlage für das Erstellen eines gRPC-ASP.NET Core-Diensts." + "description": "Eine Projektvorlage für das Erstellen eines gRPC-ASP.NET Core-Diensts.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/es-ES/strings.json index 92adaa32d863..7a1f64ff12e6 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Servicio gRPC de ASP.NET Core", - "description": "Plantilla de proyecto para crear un servicio gRPC de ASP.NET Core." + "description": "Plantilla de proyecto para crear un servicio gRPC de ASP.NET Core.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/fr-FR/strings.json index d7fdebbf62b8..0d35f4f51220 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Service gRPC ASP.NET Core", - "description": "Modèle de projet pour la création d'un service gRPC ASP.NET Core." + "description": "Modèle de projet pour la création d'un service gRPC ASP.NET Core.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/it-IT/strings.json index aa13ec82b6c0..f043f09723a2 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Servizio gRPC ASP.NET Core", - "description": "Modello di progetto per la creazione di un servizio ASP.NET Core gRPC." + "description": "Modello di progetto per la creazione di un servizio ASP.NET Core gRPC.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ja-JP/strings.json index e3c0b06d428d..19030ba1a7f1 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core gRPC サービス", - "description": "gRPC ASP.NET Core サービスを作成するためのプロジェクト テンプレート。" + "description": "gRPC ASP.NET Core サービスを作成するためのプロジェクト テンプレート。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ko-KR/strings.json index 654520a565cf..7a40f273f5c3 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core gRPC 서비스", - "description": "gRPC ASP.NET Core 서비스를 만들기 위한 프로젝트 템플릿입니다." + "description": "gRPC ASP.NET Core 서비스를 만들기 위한 프로젝트 템플릿입니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/pl-PL/strings.json index 0a322d30c4d0..b78cf941a9f1 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Usługa gRPC platformy ASP.NET Core", - "description": "Szablon projektu służący do tworzenia usługi gRPC platformy ASP.NET Core." + "description": "Szablon projektu służący do tworzenia usługi gRPC platformy ASP.NET Core.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/pt-BR/strings.json index b67138f18537..1f5ab010b579 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Serviço gRPC do ASP.NET Core", - "description": "Um modelo de projeto para criar um serviço gRPC ASP.NET Core." + "description": "Um modelo de projeto para criar um serviço gRPC ASP.NET Core.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ru-RU/strings.json index d0e8046f8ba5..25056ea7740a 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Служба gRPC ASP.NET Core", - "description": "Шаблон проекта для создания службы gRPC ASP.NET Core." + "description": "Шаблон проекта для создания службы gRPC ASP.NET Core.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/tr-TR/strings.json index 2bb69d0d5820..88fd02b3cb02 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core gRPC Hizmeti", - "description": "gRPC ASP.NET Core hizmeti oluşturmaya yönelik proje şablonu." + "description": "gRPC ASP.NET Core hizmeti oluşturmaya yönelik proje şablonu.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/zh-CN/strings.json index 62a8d7bdb074..a4bd0cdd31b9 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core gRPC 服务", - "description": "用于创建 gRPC ASP.NET Core 服务的项目模板。" + "description": "用于创建 gRPC ASP.NET Core 服务的项目模板。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/zh-TW/strings.json index aea847221a99..b70768c79233 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core gRPC 服務", - "description": "用來建立 gRPC ASP.NET Core 服務的專案範本。" + "description": "用來建立 gRPC ASP.NET Core 服務的專案範本。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/cs-CZ/strings.json index 9a99015d9edf..e55162f574d0 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/cs-CZ/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Knihovna tříd Razor", "description": "Projekt šablony pro vytvoření knihovny tříd Razor", - "parameter.SupportPagesAndViews.name": "_Stránky podpory a zobrazení" + "parameter.SupportPagesAndViews.name": "_Stránky podpory a zobrazení", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/de-DE/strings.json index 19ad3ed98c21..19167e8e9c81 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/de-DE/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Razor-Klassenbibliothek", "description": "Eine Projektvorlage zum Erstellen einer Razor-Klassenbibliothek.", - "parameter.SupportPagesAndViews.name": "_Supportseiten und -ansichten" + "parameter.SupportPagesAndViews.name": "_Supportseiten und -ansichten", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/es-ES/strings.json index 63645de5aea0..33e98b47581c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/es-ES/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Biblioteca de clases de Razor", "description": "Plantilla de proyecto para crear una biblioteca de clases de Razor.", - "parameter.SupportPagesAndViews.name": "_Páginas y vistas de soporte técnico" + "parameter.SupportPagesAndViews.name": "_Páginas y vistas de soporte técnico", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/fr-FR/strings.json index 70b03f2fa8c5..c862459ce3a7 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/fr-FR/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Bibliothèque de classes Razor", "description": "Modèle de projet pour créer une bibliothèque de classes Razor.", - "parameter.SupportPagesAndViews.name": "_Prendre en charge les pages et les vues" + "parameter.SupportPagesAndViews.name": "_Prendre en charge les pages et les vues", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/it-IT/strings.json index dc75280f9f81..b2d6472e686b 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/it-IT/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Libreria di classi Razor", "description": "Modello di progetto per la creazione di una libreria di classi Razor.", - "parameter.SupportPagesAndViews.name": "_Supporta pagine e visualizzazioni" + "parameter.SupportPagesAndViews.name": "_Supporta pagine e visualizzazioni", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ja-JP/strings.json index c89d555ec735..7bc2f3fdf33e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ja-JP/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Razor クラス ライブラリ", "description": "Razor クラス ライブラリを作成するためのプロジェクト テンプレートです。", - "parameter.SupportPagesAndViews.name": "ページとビューのサポート(_S)" + "parameter.SupportPagesAndViews.name": "ページとビューのサポート(_S)", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ko-KR/strings.json index f5d37428dd7c..6eeb92664445 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ko-KR/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Razor 클래스 라이브러리", "description": "Razor 클래스 라이브러리를 만들기 위한 프로젝트 템플릿입니다.", - "parameter.SupportPagesAndViews.name": "지원 페이지 및 보기(_S)" + "parameter.SupportPagesAndViews.name": "지원 페이지 및 보기(_S)", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/pl-PL/strings.json index a0fd9fd29783..a8e2caaea497 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/pl-PL/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Biblioteka klas Razor", "description": "Szablon projektu do tworzenia biblioteki klas Razor.", - "parameter.SupportPagesAndViews.name": "_Obsługa stron i widoków" + "parameter.SupportPagesAndViews.name": "_Obsługa stron i widoków", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/pt-BR/strings.json index 7183895cf2dd..95c86bfc69a1 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/pt-BR/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Biblioteca de Classes Razor", "description": "Um modelo de projeto para criar uma biblioteca de classes Razor.", - "parameter.SupportPagesAndViews.name": "Páginas e exibições do _suporte" + "parameter.SupportPagesAndViews.name": "Páginas e exibições do _suporte", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ru-RU/strings.json index efe043fde6d3..7c6cedfcd7d0 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/ru-RU/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Библиотека классов Razor", "description": "Шаблон проекта для создания библиотеки классов Razor.", - "parameter.SupportPagesAndViews.name": "_Представления и страницы поддержки" + "parameter.SupportPagesAndViews.name": "_Представления и страницы поддержки", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/tr-TR/strings.json index 4ef1c24edc4f..94d3c1842a1e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/tr-TR/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Razor Sınıf Kitaplığı", "description": "Razor sınıf kütüphanesi yaratma projesi şablonu.", - "parameter.SupportPagesAndViews.name": "_Destek sayfaları ve görünümler" + "parameter.SupportPagesAndViews.name": "_Destek sayfaları ve görünümler", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/zh-CN/strings.json index 961e5ca4961d..b9257c9d5ea5 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/zh-CN/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Razor 类库", "description": "用于创建 Razor 类库的项目模板。", - "parameter.SupportPagesAndViews.name": "支持页面和视图(_S)" + "parameter.SupportPagesAndViews.name": "支持页面和视图(_S)", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/zh-TW/strings.json index ed86c524aabc..422f49d8cc4c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/zh-TW/strings.json @@ -3,6 +3,8 @@ "strings": { "name": "Razor 類別庫", "description": "用於建立 Razor 類別庫的專案範本。", - "parameter.SupportPagesAndViews.name": "_Support 頁面與檢視" + "parameter.SupportPagesAndViews.name": "_Support 頁面與檢視", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/cs-CZ/strings.json index d9e0ef4f69f9..a3bc1c7ebe03 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Serverová aplikace Blazor", - "description": "Šablona projektu pro vytvoření aplikace Blazor, která běží na straně serveru uvnitř aplikace ASP.NET Core. Tato šablona se dá využít pro webové aplikace s propracovanými dynamickými uživatelskými rozhraními (UI)." + "description": "Šablona projektu pro vytvoření aplikace Blazor, která běží na straně serveru uvnitř aplikace ASP.NET Core. Tato šablona se dá využít pro webové aplikace s propracovanými dynamickými uživatelskými rozhraními (UI).", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/de-DE/strings.json index fbfd18918bc6..5d97f0d88f87 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor-Server-App", - "description": "Eine Projektvorlage für das Erstellen einer Blazor-Anwendung, die serverseitig innerhalb einer ASP.NET Core-Anwendung ausgeführt wird. Diese Vorlage kann für Webanwendungen mit umfangreichen dynamischen Benutzeroberflächen verwendet werden." + "description": "Eine Projektvorlage für das Erstellen einer Blazor-Anwendung, die serverseitig innerhalb einer ASP.NET Core-Anwendung ausgeführt wird. Diese Vorlage kann für Webanwendungen mit umfangreichen dynamischen Benutzeroberflächen verwendet werden.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/es-ES/strings.json index cab2e5fff713..df093c5e4e3f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplicación de servidor Blazor", - "description": "Plantilla de proyecto para crear una aplicación Blazor que se ejecuta del lado servidor dentro de una aplicación de ASP.NET Core. Esta plantilla se puede usar para las aplicaciones web con interfaces de usuario dinámicas enriquecidas." + "description": "Plantilla de proyecto para crear una aplicación Blazor que se ejecuta del lado servidor dentro de una aplicación de ASP.NET Core. Esta plantilla se puede usar para las aplicaciones web con interfaces de usuario dinámicas enriquecidas.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/fr-FR/strings.json index 8125fff887d8..0f5cb0c2dbe1 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Application serveur Blazor", - "description": "Modèle de projet pour la création d'une application Blazor qui s'exécute côté serveur dans une application ASP.NET Core. Vous pouvez utiliser ce modèle pour les applications web ayant des IU (interfaces utilisateur) dynamiques riches." + "description": "Modèle de projet pour la création d'une application Blazor qui s'exécute côté serveur dans une application ASP.NET Core. Vous pouvez utiliser ce modèle pour les applications web ayant des IU (interfaces utilisateur) dynamiques riches.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/it-IT/strings.json index 1ad3eb5ec993..433564f41de7 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "App server Blazor", - "description": "Modello di progetto per la creazione di un'applicazione Blazor che viene eseguita lato server all'interno di un'applicazione ASP.NET Core. Questo modello può essere usato per applicazioni Web con interfacce utente dinamiche." + "description": "Modello di progetto per la creazione di un'applicazione Blazor che viene eseguita lato server all'interno di un'applicazione ASP.NET Core. Questo modello può essere usato per applicazioni Web con interfacce utente dinamiche.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ja-JP/strings.json index e61ed0364935..11f86ecba15e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor サーバー アプリ", - "description": "ASP.NET Core アプリケーション内のサーバー側で実行される Blazor アプリケーションを作成するためのプロジェクト テンプレート。このテンプレートは、リッチでダイナミックなユーザー インターフェイス (UI) を備えた Web アプリケーションに使用できます。" + "description": "ASP.NET Core アプリケーション内のサーバー側で実行される Blazor アプリケーションを作成するためのプロジェクト テンプレート。このテンプレートは、リッチでダイナミックなユーザー インターフェイス (UI) を備えた Web アプリケーションに使用できます。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ko-KR/strings.json index 92444cf0c0d2..0d5b55a7dae5 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor 서버 앱", - "description": "ASP.NET Core 애플리케이션 내에서 서버 쪽을 실행하는 Blazor 애플리케이션을 만들기 위한 프로젝트 템플릿입니다. 이 템플릿을 사용하여 다양한 동적 UI(사용자 인터페이스)가 포함된 웹 애플리케이션을 만들 수 있습니다." + "description": "ASP.NET Core 애플리케이션 내에서 서버 쪽을 실행하는 Blazor 애플리케이션을 만들기 위한 프로젝트 템플릿입니다. 이 템플릿을 사용하여 다양한 동적 UI(사용자 인터페이스)가 포함된 웹 애플리케이션을 만들 수 있습니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/pl-PL/strings.json index 3339fc337806..41db7ca8830b 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplikacja serwera Blazor", - "description": "Szablon projektu służący do tworzenia aplikacji Blazor działającej po stronie serwera wewnątrz aplikacji platformy ASP.NET Core. Ten szablon może być używany dla aplikacji internetowych z rozbudowanymi, dynamicznymi interfejsami użytkowników." + "description": "Szablon projektu służący do tworzenia aplikacji Blazor działającej po stronie serwera wewnątrz aplikacji platformy ASP.NET Core. Ten szablon może być używany dla aplikacji internetowych z rozbudowanymi, dynamicznymi interfejsami użytkowników.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/pt-BR/strings.json index 76edb169fafe..775222067cbe 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplicativo de Servidor Blazor", - "description": "Um modelo de projeto para criar um aplicativo Blazor que é executado no lado do servidor de um aplicativo ASP.NET Core. Esse modelo pode ser usado para aplicativos Web com interfaces do usuário completas e dinâmicas." + "description": "Um modelo de projeto para criar um aplicativo Blazor que é executado no lado do servidor de um aplicativo ASP.NET Core. Esse modelo pode ser usado para aplicativos Web com interfaces do usuário completas e dinâmicas.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ru-RU/strings.json index 3356df6fd144..46f21bdd7f5c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Серверное приложение Blazor", - "description": "Шаблон проекта для создания приложения Blazor, которое запускается на стороне сервера в приложении ASP.NET Core. Этот шаблон можно использовать для веб-приложений с полнофункциональными динамическими пользовательскими интерфейсами." + "description": "Шаблон проекта для создания приложения Blazor, которое запускается на стороне сервера в приложении ASP.NET Core. Этот шаблон можно использовать для веб-приложений с полнофункциональными динамическими пользовательскими интерфейсами.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/tr-TR/strings.json index 2816c2991281..204012c1012c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor Sunucu Uygulaması", - "description": "Bir ASP.NET Core uygulaması içinde sunucu tarafında çalışan bir Blazor uygulaması oluşturmaya yönelik proje şablonu. Bu şablon, zengin dinamik kullanıcı arabirimlerine (UI) sahip web uygulamaları için kullanılabilir." + "description": "Bir ASP.NET Core uygulaması içinde sunucu tarafında çalışan bir Blazor uygulaması oluşturmaya yönelik proje şablonu. Bu şablon, zengin dinamik kullanıcı arabirimlerine (UI) sahip web uygulamaları için kullanılabilir.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/zh-CN/strings.json index 99bda9b27608..b5ea33655594 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor Server 应用", - "description": "用于创建 ASP.NET Core 应用程序内运行服务器端的 Blazor 应用程序的项目模板。此模板可用于具有丰富动态用户界面(UI)的 web 应用程序。" + "description": "用于创建 ASP.NET Core 应用程序内运行服务器端的 Blazor 应用程序的项目模板。此模板可用于具有丰富动态用户界面(UI)的 web 应用程序。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/zh-TW/strings.json index 0281c56dd8ae..9ea6dcde347f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorComponentsWeb-CSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Blazor 伺服器應用程式", - "description": "用來建立 ASP.NET Core 應用程式內執行伺服器端之 Blazor 應用程式的專案範本。具有豐富動態使用者介面 (UI) 的 Web 應用程式可使用此範本。" + "description": "用來建立 ASP.NET Core 應用程式內執行伺服器端之 Blazor 應用程式的專案範本。具有豐富動態使用者介面 (UI) 的 Web 應用程式可使用此範本。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/cs-CZ/strings.json index 12b30913d55e..332eec3dd943 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Webová aplikace ASP.NET Core", - "description": "Šablona projektu pro vytvoření aplikace ASP.NET Core s ukázkovým obsahem stránek ASP.NET Razor" + "description": "Šablona projektu pro vytvoření aplikace ASP.NET Core s ukázkovým obsahem stránek ASP.NET Razor", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/de-DE/strings.json index de3aaa43a890..c8cec5e0f45f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core-Web-App", - "description": "Eine Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung mit Beispielinhalt für ASP.NET-Razor-Seiten." + "description": "Eine Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung mit Beispielinhalt für ASP.NET-Razor-Seiten.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/es-ES/strings.json index b68e68c21047..133a5d3e0e31 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplicación web de ASP.NET Core", - "description": "Una plantilla de proyecto para crear una aplicación ASP.NET Core con contenido de páginas de Razor de ASP.NET de ejemplo." + "description": "Una plantilla de proyecto para crear una aplicación ASP.NET Core con contenido de páginas de Razor de ASP.NET de ejemplo.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/fr-FR/strings.json index e52de1ae5e16..1fee4b744e41 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Application web ASP.NET Core", - "description": "Modèle de projet permettant de créer une application ASP.NET Core avec des exemples de contenus basés sur des pages Razor en ASP.NET." + "description": "Modèle de projet permettant de créer une application ASP.NET Core avec des exemples de contenus basés sur des pages Razor en ASP.NET.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/it-IT/strings.json index 9ce611c1c5b0..183019dc151f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "App Web ASP.NET Core", - "description": "Modello di progetto per la creazione di un'applicazione ASP.NET Core con contenuto di pagine Razor ASP.NET di esempio." + "description": "Modello di progetto per la creazione di un'applicazione ASP.NET Core con contenuto di pagine Razor ASP.NET di esempio.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ja-JP/strings.json index 6049a17f9146..d8e4d9c36661 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web アプリ", - "description": "サンプルの ASP.NET Razor Pages コンテンツで ASP.NET Core アプリケーションを作成するためのプロジェクト テンプレートです。" + "description": "サンプルの ASP.NET Razor Pages コンテンツで ASP.NET Core アプリケーションを作成するためのプロジェクト テンプレートです。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ko-KR/strings.json index 405228b8b355..241ceef9410f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core 웹앱", - "description": "예제 ASP.NET Razor 페이지 콘텐츠를 사용하여 ASP.NET Core 애플리케이션을 만드는 데 사용되는 프로젝트 템플릿입니다." + "description": "예제 ASP.NET Razor 페이지 콘텐츠를 사용하여 ASP.NET Core 애플리케이션을 만드는 데 사용되는 프로젝트 템플릿입니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/pl-PL/strings.json index 286c720cba77..66b6b73c4249 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplikacja internetowa ASP.NET Core", - "description": "Szablon projektu na potrzeby tworzenia aplikacji ASP.NET Core z przykładem zawartości strony ASP.NET Razor." + "description": "Szablon projektu na potrzeby tworzenia aplikacji ASP.NET Core z przykładem zawartości strony ASP.NET Razor.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/pt-BR/strings.json index 527ae51ffec5..29937dc3be1e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplicativo Web ASP.NET Core", - "description": "Um modelo de projeto para a criação de um aplicativo ASP.NET Core, com conteúdo de páginas do ASP.NET Razor de exemplo." + "description": "Um modelo de projeto para a criação de um aplicativo ASP.NET Core, com conteúdo de páginas do ASP.NET Razor de exemplo.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ru-RU/strings.json index 5ed29afae6f8..1480e0d4955e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Веб-приложение ASP.NET Core", - "description": "Шаблон проекта для создания приложения ASP.NET Core с примером содержимого Razor Pages ASP.NET." + "description": "Шаблон проекта для создания приложения ASP.NET Core с примером содержимого Razor Pages ASP.NET.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/tr-TR/strings.json index a136b3696a33..23cf4674f29a 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web Uygulaması", - "description": "Örnek ASP.NET Razor Sayfaları içeriğine sahip bir ASP.NET Core uygulaması oluşturmaya yönelik proje şablonu." + "description": "Örnek ASP.NET Razor Sayfaları içeriğine sahip bir ASP.NET Core uygulaması oluşturmaya yönelik proje şablonu.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/zh-CN/strings.json index 1dcb91a8f39b..e51a4d6ee565 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web 应用", - "description": "用于创建 ASP.NET Core 应用程序的项目模板,其中包含示例 ASP.NET Razor 页面内容。" + "description": "用于创建 ASP.NET Core 应用程序的项目模板,其中包含示例 ASP.NET Razor 页面内容。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/zh-TW/strings.json index b2f69443f0aa..07b63573188e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web 應用程式", - "description": "可用於使用範例 ASP.NET Razor 頁面內容建立 ASP.NET Core 應用程式的專案範本。" + "description": "可用於使用範例 ASP.NET Razor 頁面內容建立 ASP.NET Core 應用程式的專案範本。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/cs-CZ/strings.json index 7d3224a6e976..aa04e844b39d 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Webová aplikace ASP.NET Core (Model-View-Controller)", - "description": "Šablona projektu pro vytvoření aplikace ASP.NET Core s ukázkovými zobrazeními a kontrolery ASP.NET Core MVC. Tato šablona se dá použít i pro služby RESTful HTTP." + "description": "Šablona projektu pro vytvoření aplikace ASP.NET Core s ukázkovými zobrazeními a kontrolery ASP.NET Core MVC. Tato šablona se dá použít i pro služby RESTful HTTP.", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/de-DE/strings.json index 248b941caa5e..a161c7cfad6f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core-Web-App (Model View Controller)", - "description": "Eine Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung mit Beispielen für ASP.NET Core-MVC-Ansichten und -Controller. Diese Vorlage kann auch für RESTful HTTP-Dienste verwendet werden." + "description": "Eine Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung mit Beispielen für ASP.NET Core-MVC-Ansichten und -Controller. Diese Vorlage kann auch für RESTful HTTP-Dienste verwendet werden.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/es-ES/strings.json index 38d563ddf345..1ac0532937ea 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplicación web de ASP.NET Core (Modelo-Vista-Controlador)", - "description": "Una plantilla de proyecto para crear una aplicación ASP.NET Core con controladores y vistas de ASP.NET Core MVC de ejemplo. Esta plantilla también puede usarse para servicios RESTful HTTP." + "description": "Una plantilla de proyecto para crear una aplicación ASP.NET Core con controladores y vistas de ASP.NET Core MVC de ejemplo. Esta plantilla también puede usarse para servicios RESTful HTTP.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/fr-FR/strings.json index e365bb62dd6a..5e79149920ff 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Application web ASP.NET Core (modèle-vue-contrôleur)", - "description": "Modèle de projet permettant de créer une application ASP.NET Core avec des exemples de vues et de contrôleurs ASP.NET Core MVC. Vous pouvez également utiliser ce modèle pour les services HTTP RESTful." + "description": "Modèle de projet permettant de créer une application ASP.NET Core avec des exemples de vues et de contrôleurs ASP.NET Core MVC. Vous pouvez également utiliser ce modèle pour les services HTTP RESTful.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/it-IT/strings.json index f168272b380f..aa3172daa4eb 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "App Web ASP.NET Core (Model-View-Controller)", - "description": "Modello di progetto per la creazione di un'applicazione ASP.NET Core con viste e controller ASP.NET Core MVC di esempio. È possibile usare questo modello anche per i servizi HTTP RESTful." + "description": "Modello di progetto per la creazione di un'applicazione ASP.NET Core con viste e controller ASP.NET Core MVC di esempio. È possibile usare questo modello anche per i servizi HTTP RESTful.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ja-JP/strings.json index ef9461bb985f..ea43c5022d08 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web アプリ (Model-View-Controller)", - "description": "ASP.NET Core MVC のサンプル ビューとコントローラーで ASP.NET Core アプリケーションを作成するためのプロジェクト テンプレートです。このテンプレートは RESTful HTTP サービスでも使用できます。" + "description": "ASP.NET Core MVC のサンプル ビューとコントローラーで ASP.NET Core アプリケーションを作成するためのプロジェクト テンプレートです。このテンプレートは RESTful HTTP サービスでも使用できます。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ko-KR/strings.json index 1f3952fd118b..584fc86d69f7 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core 웹앱(Model-View-Controller)", - "description": "예제 ASP.NET Core MVC 뷰 및 컨트롤러를 사용하여 ASP.NET Core 애플리케이션을 만드는 데 사용되는 프로젝트 템플릿입니다. 이 템플릿은 RESTful HTTP 서비스에도 사용할 수 있습니다." + "description": "예제 ASP.NET Core MVC 뷰 및 컨트롤러를 사용하여 ASP.NET Core 애플리케이션을 만드는 데 사용되는 프로젝트 템플릿입니다. 이 템플릿은 RESTful HTTP 서비스에도 사용할 수 있습니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/pl-PL/strings.json index f7c97db51cb4..06b8f298f543 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplikacja internetowa ASP.NET Core (Model-View-Controller)", - "description": "Szablon projektu służący do tworzenia aplikacji platformy ASP.NET Core z przykładowymi widokami i kontrolerami platformy ASP.NET Core MVC. Tego szablonu można także użyć dla usług HTTP RESTful." + "description": "Szablon projektu służący do tworzenia aplikacji platformy ASP.NET Core z przykładowymi widokami i kontrolerami platformy ASP.NET Core MVC. Tego szablonu można także użyć dla usług HTTP RESTful.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/pt-BR/strings.json index 797a481624b8..3d24414ba44f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Aplicativo Web do ASP.NET Core (Model-View-Controller)", - "description": "Um modelo de projeto para criar um aplicativo ASP.NET Core com Controladores e Exibições do ASP.NET Core MVC de exemplo. Esse modelo também pode ser usado para serviços HTTP RESTful." + "description": "Um modelo de projeto para criar um aplicativo ASP.NET Core com Controladores e Exibições do ASP.NET Core MVC de exemplo. Esse modelo também pode ser usado para serviços HTTP RESTful.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ru-RU/strings.json index 75b1bcaa4655..cf50769d39e4 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Веб-приложение ASP.NET Core (модель-представление-контроллер)", - "description": "Шаблон проекта для создания приложения ASP.NET Core с образцом представлений MVC и контроллеров ASP.NET Core. Этот шаблон можно также использовать для служб HTTP RESTful." + "description": "Шаблон проекта для создания приложения ASP.NET Core с образцом представлений MVC и контроллеров ASP.NET Core. Этот шаблон можно также использовать для служб HTTP RESTful.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/tr-TR/strings.json index 9e7fbb0f541f..62837feed841 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web Uygulaması (Model-Görünüm-Denetleyici)", - "description": "Örnek ASP.NET Core MVC Görünümleri ve Denetleyicileri içeren bir ASP.NET Core uygulaması oluşturmaya yönelik proje şablonu. Bu şablon aynı zamanda RESTful HTTP hizmetleri için de kullanılabilir." + "description": "Örnek ASP.NET Core MVC Görünümleri ve Denetleyicileri içeren bir ASP.NET Core uygulaması oluşturmaya yönelik proje şablonu. Bu şablon aynı zamanda RESTful HTTP hizmetleri için de kullanılabilir.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/zh-CN/strings.json index c39a84cd1b3b..dca2bc5d0ed6 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web 应用(模型-视图-控制器)", - "description": "用于创建包含示例 ASP.NET Core MVC 视图和控制器的 ASP.NET Core 应用程序的项目模板。此模板还可以用于 RESTful HTTP 服务。" + "description": "用于创建包含示例 ASP.NET Core MVC 视图和控制器的 ASP.NET Core 应用程序的项目模板。此模板还可以用于 RESTful HTTP 服务。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/zh-TW/strings.json index a5879030f0d4..2315b016b036 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web 應用程式 (Model-View-Controller)", - "description": "用於建立 ASP.NET Core 應用程式的專案範本,附有 ASP.NET Core MVC 的檢視及控制器範例。此範本也可用於 RESTful HTTP 服務。" + "description": "用於建立 ASP.NET Core 應用程式的專案範本,附有 ASP.NET Core MVC 的檢視及控制器範例。此範本也可用於 RESTful HTTP 服務。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/cs-CZ/strings.json index 746e19f9fcd3..ee8f2801fb02 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/cs-CZ/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "Povolit podporu _OpenAPI", "parameter.DisableOpenAPI.description": "Povolení podpory OpenAPI (Swagger)", "parameter.UseMinimalAPIs.name": "Používání kontrolérů (pokud chcete používat minimální rozhraní API, zrušte zaškrtnutí)", - "parameter.UseMinimalAPIs.description": "Určuje, jestli se místo kontrolérů mají používat minimální rozhraní API." + "parameter.UseMinimalAPIs.description": "Určuje, jestli se místo kontrolérů mají používat minimální rozhraní API.", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/de-DE/strings.json index 27d30199bc8b..0fb78dd27d14 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/de-DE/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "_OpenAPI-Unterstützung aktivieren", "parameter.DisableOpenAPI.description": "Aktiviert OpenAPI-Unterstützung (Swagger)", "parameter.UseMinimalAPIs.name": "Controller verwenden (deaktivieren, um minimale APIs zu verwenden)", - "parameter.UseMinimalAPIs.description": "Gibt an, ob minimale APIs anstelle von Controllern verwendet werden sollen." + "parameter.UseMinimalAPIs.description": "Gibt an, ob minimale APIs anstelle von Controllern verwendet werden sollen.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/es-ES/strings.json index 7967b75e05a6..7bddf25a6c1d 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/es-ES/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "Habilitar compatibilidad con _OpenAPI", "parameter.DisableOpenAPI.description": "Habilitar la compatibilidad con OpenAPI (Swagger)", "parameter.UseMinimalAPIs.name": "Usar controladores (desactivar para usar API mínimas)", - "parameter.UseMinimalAPIs.description": "Indica si se deben usar API minimas en lugar de controladores." + "parameter.UseMinimalAPIs.description": "Indica si se deben usar API minimas en lugar de controladores.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/fr-FR/strings.json index fdb68ea3696d..942dffb98917 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/fr-FR/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "Activer la prise en charge d'_OpenAPI", "parameter.DisableOpenAPI.description": "Active la prise en charge d'OpenAPI (Swagger)", "parameter.UseMinimalAPIs.name": "Utiliser des contrôleurs (décocher pour utiliser un minimum d'API)", - "parameter.UseMinimalAPIs.description": "S'il faut utiliser des API minimales au lieu de contrôleurs." + "parameter.UseMinimalAPIs.description": "S'il faut utiliser des API minimales au lieu de contrôleurs.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/it-IT/strings.json index 9945ffaec5bc..d4f598d0b0d2 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/it-IT/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "Abilita supporto _OpenAPI", "parameter.DisableOpenAPI.description": "Abilita supporto OpenAPI (Swagger)", "parameter.UseMinimalAPIs.name": "Usa i controller (deseleziona per usare il numero minimo di API)", - "parameter.UseMinimalAPIs.description": "Indica se usare le API minimal invece dei controller." + "parameter.UseMinimalAPIs.description": "Indica se usare le API minimal invece dei controller.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ja-JP/strings.json index f399c2bffe31..93539d010cdc 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ja-JP/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "OpenAPI サポートを有効にする(_O)", "parameter.DisableOpenAPI.description": "OpenAPI (Swagger) サポートを有効にする", "parameter.UseMinimalAPIs.name": "コントローラーを使用する (最小限の API を使用する場合はオフにします)", - "parameter.UseMinimalAPIs.description": "コントローラーの代わりに最小限の API を使用するかどうか。" + "parameter.UseMinimalAPIs.description": "コントローラーの代わりに最小限の API を使用するかどうか。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ko-KR/strings.json index 3c9bfeaf589e..88eff917fce2 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ko-KR/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "OpenAPI 지원 사용(_O)", "parameter.DisableOpenAPI.description": "OpenAPI(Swagger) 지원 사용", "parameter.UseMinimalAPIs.name": "컨트롤러 사용(최소 API 사용 선택 취소)", - "parameter.UseMinimalAPIs.description": "컨트롤러 대신 최소 API를 사용할지 여부" + "parameter.UseMinimalAPIs.description": "컨트롤러 대신 최소 API를 사용할지 여부", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/pl-PL/strings.json index b343560037e9..eeef1026141d 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/pl-PL/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "Włącz obsługę interfejsu _OpenAPI", "parameter.DisableOpenAPI.description": "Włącza obsługę interfejsu OpenAPI (Swagger)", "parameter.UseMinimalAPIs.name": "Użyj kontrolerów (usuń zaznaczenie, aby używać minimalnej ilości interfejsów API)", - "parameter.UseMinimalAPIs.description": "Określa, czy używać minimalnej ilości interfejsów API zamiast kontrolerów." + "parameter.UseMinimalAPIs.description": "Określa, czy używać minimalnej ilości interfejsów API zamiast kontrolerów.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/pt-BR/strings.json index 2c07afece218..3587683102cd 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/pt-BR/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "Habilitar o suporte a _OpenAPI", "parameter.DisableOpenAPI.description": "Habilita o suporte a OpenAPI (Swagger)", "parameter.UseMinimalAPIs.name": "Usar controladores (desmarque para usar APIs mínimas)", - "parameter.UseMinimalAPIs.description": "Se usar APIs mínimas em vez de controladores." + "parameter.UseMinimalAPIs.description": "Se usar APIs mínimas em vez de controladores.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ru-RU/strings.json index bb529502b9e7..5e9161080cbe 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/ru-RU/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "Включить поддержку _OpenAPI", "parameter.DisableOpenAPI.description": "Включает поддержку OpenAPI (Swagger)", "parameter.UseMinimalAPIs.name": "Использовать контроллеры (снимите флажок, чтобы использовать минимальные API)", - "parameter.UseMinimalAPIs.description": "Использование минимальных API вместо контроллеров." + "parameter.UseMinimalAPIs.description": "Использование минимальных API вместо контроллеров.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/tr-TR/strings.json index 8583f1337385..eeb312f21f99 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/tr-TR/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "_OpenAPI desteğini etkinleştir", "parameter.DisableOpenAPI.description": "OpenAPI (Swagger) desteğini etkinleştirir", "parameter.UseMinimalAPIs.name": "Denetleyicileri kullan (minimal API’leri kullanmak için onay işaretini kaldırın)", - "parameter.UseMinimalAPIs.description": "Denetleyiciler yerine minimal API’lerin kullanılıp kullanılmayacağını belirtir." + "parameter.UseMinimalAPIs.description": "Denetleyiciler yerine minimal API’lerin kullanılıp kullanılmayacağını belirtir.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/zh-CN/strings.json index 72cb6d8591b0..18c57c75a7ad 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/zh-CN/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "启用 OpenAPI 支持(_O)", "parameter.DisableOpenAPI.description": "启用 OpenAPI (Swagger)支持", "parameter.UseMinimalAPIs.name": "使用控制器(取消选中以使用最小 API)", - "parameter.UseMinimalAPIs.description": "是否使用最小 API 而不是控制器。" + "parameter.UseMinimalAPIs.description": "是否使用最小 API 而不是控制器。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/zh-TW/strings.json index b4faea763fcf..ce2ef022d34e 100755 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/zh-TW/strings.json @@ -6,6 +6,8 @@ "parameter.DisableOpenAPI.name": "啟用 OpenAPI 支援(_O)", "parameter.DisableOpenAPI.description": "啟用 OpenAPI (Swagger) 支援", "parameter.UseMinimalAPIs.name": "使用控制器 (取消勾選以使用最低 API)", - "parameter.UseMinimalAPIs.description": "是否要使用迷你 API 而不是控制器。" + "parameter.UseMinimalAPIs.description": "是否要使用迷你 API 而不是控制器。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/cs-CZ/strings.json index 3e3b9dda187d..b7943cdde094 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Webové rozhraní API pro ASP.NET Core", - "description": "Šablona projektu pro vytvoření aplikace ASP.NET Core s ukázkovým kontrolerem pro službu RESTful HTTP. Tato šablona se dá použít i pro zobrazení a kontrolery ASP.NET Core MVC." + "description": "Šablona projektu pro vytvoření aplikace ASP.NET Core s ukázkovým kontrolerem pro službu RESTful HTTP. Tato šablona se dá použít i pro zobrazení a kontrolery ASP.NET Core MVC.", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/de-DE/strings.json index 4b6cd6bfba11..5440dfac0aae 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core-Web-API", - "description": "Eine Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung mit einem Beispielcontroller für einen RESTful HTTP-Dienst. Diese Vorlage kann auch für ASP.NET Core-MVC-Ansichten und -Controller verwendet werden." + "description": "Eine Projektvorlage zum Erstellen einer ASP.NET Core-Anwendung mit einem Beispielcontroller für einen RESTful HTTP-Dienst. Diese Vorlage kann auch für ASP.NET Core-MVC-Ansichten und -Controller verwendet werden.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/es-ES/strings.json index 3ac4c20ecfa9..6f5bc9f79052 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web API", - "description": "Una plantilla de proyecto para crear una aplicación ASP.NET Core con un controlador de ejemplo para un servicio RESTful HTTP. Esta plantilla también puede usarse para controladores y vistas de ASP.NET Core MVC." + "description": "Una plantilla de proyecto para crear una aplicación ASP.NET Core con un controlador de ejemplo para un servicio RESTful HTTP. Esta plantilla también puede usarse para controladores y vistas de ASP.NET Core MVC.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/fr-FR/strings.json index 82aa38a1668a..28280b6b8581 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "API web ASP.NET Core", - "description": "Modèle de projet permettant de créer une application ASP.NET Core avec un exemple de contrôleur pour un service HTTP RESTful. Vous pouvez également utiliser ce modèle pour les vues et contrôleurs ASP.NET Core MVC." + "description": "Modèle de projet permettant de créer une application ASP.NET Core avec un exemple de contrôleur pour un service HTTP RESTful. Vous pouvez également utiliser ce modèle pour les vues et contrôleurs ASP.NET Core MVC.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/it-IT/strings.json index a4d944ccbe9a..5bf756b54d24 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "API Web ASP.NET Core", - "description": "Modello di progetto per la creazione di un'applicazione ASP.NET Core con un controller di esempio per un servizio HTTP RESTful. È possibile usare questo modello anche per i controller e le viste di ASP.NET Core MVC." + "description": "Modello di progetto per la creazione di un'applicazione ASP.NET Core con un controller di esempio per un servizio HTTP RESTful. È possibile usare questo modello anche per i controller e le viste di ASP.NET Core MVC.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ja-JP/strings.json index 65d2d566b989..0273b9af0859 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web API", - "description": "RESTful HTTP サービスのサンプル コントローラーで ASP.NET Core アプリケーションを作成するためのプロジェクト テンプレートです。このテンプレートは ASP.NET Core MVC のビューとコントローラーでも使用できます。" + "description": "RESTful HTTP サービスのサンプル コントローラーで ASP.NET Core アプリケーションを作成するためのプロジェクト テンプレートです。このテンプレートは ASP.NET Core MVC のビューとコントローラーでも使用できます。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ko-KR/strings.json index e6ec364e86b4..64a6da5c8ba3 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web API", - "description": "RESTful HTTP 서비스용 예제 컨트롤러를 사용하여 ASP.NET Core 애플리케이션을 만드는 데 사용되는 프로젝트 템플릿입니다. 이 템플릿은 ASP.NET Core MVC 뷰 및 컨트롤러에도 사용할 수 있습니다." + "description": "RESTful HTTP 서비스용 예제 컨트롤러를 사용하여 ASP.NET Core 애플리케이션을 만드는 데 사용되는 프로젝트 템플릿입니다. 이 템플릿은 ASP.NET Core MVC 뷰 및 컨트롤러에도 사용할 수 있습니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/pl-PL/strings.json index 64005d498390..e6b2cfc478e5 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Internetowy interfejs API platformy ASP.NET Core", - "description": "Szablon projektu służący do tworzenia aplikacji platformy ASP.NET Core z przykładowym kontrolerem obsługującym usługę HTTP RESTful. Tego szablonu można także użyć dla widoków i kontrolerów platformy ASP.NET Core MVC." + "description": "Szablon projektu służący do tworzenia aplikacji platformy ASP.NET Core z przykładowym kontrolerem obsługującym usługę HTTP RESTful. Tego szablonu można także użyć dla widoków i kontrolerów platformy ASP.NET Core MVC.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/pt-BR/strings.json index 03c68db26b48..094f5229aa2a 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "API Web do ASP.NET Core", - "description": "Um modelo de projeto para criar um aplicativo ASP.NET Core com um Controlador de exemplo para um serviço HTTP RESTful. Esse modelo também pode ser usado para Controladores e Exibições do ASP.NET Core MVC." + "description": "Um modelo de projeto para criar um aplicativo ASP.NET Core com um Controlador de exemplo para um serviço HTTP RESTful. Esse modelo também pode ser usado para Controladores e Exibições do ASP.NET Core MVC.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ru-RU/strings.json index 2c714fc9b5fe..c8cc70c54723 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Веб-API ASP.NET Core", - "description": "Шаблон проекта для создания приложения ASP.NET Core с образцом контроллера для службы HTTP RESTful. Этот шаблон можно также использовать для представлений MVC и контроллеров ASP.NET Core." + "description": "Шаблон проекта для создания приложения ASP.NET Core с образцом контроллера для службы HTTP RESTful. Этот шаблон можно также использовать для представлений MVC и контроллеров ASP.NET Core.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/tr-TR/strings.json index 0d16af9631d3..f9a4026ba93e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web API'si", - "description": "RESTful HTTP hizmetine ait örnek bir Denetleyici içeren bir ASP.NET Core uygulaması oluşturmaya yönelik proje şablonu. Bu şablon aynı zamanda ASP.NET Core MVC Görünümleri ve Denetleyicileri için de kullanılabilir." + "description": "RESTful HTTP hizmetine ait örnek bir Denetleyici içeren bir ASP.NET Core uygulaması oluşturmaya yönelik proje şablonu. Bu şablon aynı zamanda ASP.NET Core MVC Görünümleri ve Denetleyicileri için de kullanılabilir.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/zh-CN/strings.json index 9b33c17715d8..12df1e884925 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web API", - "description": "用于创建包含 RESTful HTTP 服务示例控制器的 ASP.NET Core 应用程序的项目模板。此模板还可以用于 ASP.NET Core MVC 视图和控制器。" + "description": "用于创建包含 RESTful HTTP 服务示例控制器的 ASP.NET Core 应用程序的项目模板。此模板还可以用于 ASP.NET Core MVC 视图和控制器。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/zh-TW/strings.json index 1b901cbe8a86..7ab57d6321ee 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ASP.NET Core Web API", - "description": "用於建立 ASP.NET Core 應用程式的專案範本,附有 RESTful HTTP 服務的控制器範例。此範本也可用於 ASP.NET Core MVC 的檢視及控制器。" + "description": "用於建立 ASP.NET Core 應用程式的專案範本,附有 RESTful HTTP 服務的控制器範例。此範本也可用於 ASP.NET Core MVC 的檢視及控制器。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/cs-CZ/strings.json index 13105e4de6f3..acecfe1181f9 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Šablona prázdného projektu pro vytvoření služby Worker Service" + "description": "Šablona prázdného projektu pro vytvoření služby Worker Service", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/de-DE/strings.json index ecec87715648..1f5dfa7a1a9b 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Workerdienst", - "description": "Eine leere Projektvorlage zum Erstellen eines Workerdiensts." + "description": "Eine leere Projektvorlage zum Erstellen eines Workerdiensts.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/es-ES/strings.json index b580b6a5c1b2..d7aa1d90a250 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Una plantilla de proyecto vacía para crear un servicio Worker." + "description": "Una plantilla de proyecto vacía para crear un servicio Worker.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/fr-FR/strings.json index fd4416d5fe3c..4a1ceaefaaf4 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Service Worker", - "description": "Modèle de projet vide pour la création d'un service Worker." + "description": "Modèle de projet vide pour la création d'un service Worker.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/it-IT/strings.json index a672d8c54174..d0a2d29c1365 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Modello di progetto vuoto per la creazione di un'istanza di Worker Service." + "description": "Modello di progetto vuoto per la creazione di un'istanza di Worker Service.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ja-JP/strings.json index 3b1075214d09..8183d2a906ad 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ワーカー サービス", - "description": "Worker Service を作成するための空のプロジェクト テンプレート。" + "description": "Worker Service を作成するための空のプロジェクト テンプレート。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ko-KR/strings.json index 260988cca48c..70aa07b3414c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "작업자 서비스", - "description": "Worker Service를 만드는 데 사용하는 빈 프로젝트 템플릿입니다." + "description": "Worker Service를 만드는 데 사용하는 빈 프로젝트 템플릿입니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/pl-PL/strings.json index 899bb59795af..47f74a45374f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Usługa robocza", - "description": "Szablon pustego projektu służący do tworzenia usługi procesu roboczego." + "description": "Szablon pustego projektu służący do tworzenia usługi procesu roboczego.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/pt-BR/strings.json index c1afee3d7a60..a1b3bd416fc1 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Um modelo de projeto vazio para criar um worker service." + "description": "Um modelo de projeto vazio para criar um worker service.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ru-RU/strings.json index fc61e21c59ff..8417343c4fba 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Шаблон пустого проекта для создания службы Worker Service." + "description": "Шаблон пустого проекта для создания службы Worker Service.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/tr-TR/strings.json index 26194f3c5d19..27f95e1dcf95 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Çalışan Hizmeti", - "description": "Çalışan hizmeti oluşturmaya yönelik boş proje şablonu." + "description": "Çalışan hizmeti oluşturmaya yönelik boş proje şablonu.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/zh-CN/strings.json index b7b92c4d6df9..35a40ba37f46 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "用于创建 worker service 的空项目模板。" + "description": "用于创建 worker service 的空项目模板。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/zh-TW/strings.json index 02be5cb00edc..7e950d7e33ca 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-CSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "用於建立 Worker Service 的空白專案範本。" + "description": "用於建立 Worker Service 的空白專案範本。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/cs-CZ/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/cs-CZ/strings.json index 13105e4de6f3..acecfe1181f9 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/cs-CZ/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/cs-CZ/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Šablona prázdného projektu pro vytvoření služby Worker Service" + "description": "Šablona prázdného projektu pro vytvoření služby Worker Service", + "parameter.UseProgramMain.name": "Nepoužívat _příkazy nejvyšší úrovně", + "parameter.UseProgramMain.description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/de-DE/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/de-DE/strings.json index ecec87715648..1f5dfa7a1a9b 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/de-DE/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/de-DE/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Workerdienst", - "description": "Eine leere Projektvorlage zum Erstellen eines Workerdiensts." + "description": "Eine leere Projektvorlage zum Erstellen eines Workerdiensts.", + "parameter.UseProgramMain.name": "Keine Anweisungen_der obersten Ebene verwenden", + "parameter.UseProgramMain.description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/es-ES/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/es-ES/strings.json index b580b6a5c1b2..d7aa1d90a250 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/es-ES/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/es-ES/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Una plantilla de proyecto vacía para crear un servicio Worker." + "description": "Una plantilla de proyecto vacía para crear un servicio Worker.", + "parameter.UseProgramMain.name": "No usar instrucciones de _nivel superior", + "parameter.UseProgramMain.description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/fr-FR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/fr-FR/strings.json index fd4416d5fe3c..4a1ceaefaaf4 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/fr-FR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/fr-FR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Service Worker", - "description": "Modèle de projet vide pour la création d'un service Worker." + "description": "Modèle de projet vide pour la création d'un service Worker.", + "parameter.UseProgramMain.name": "N’utilisez pas _d’instructions de niveau supérieur.", + "parameter.UseProgramMain.description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/it-IT/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/it-IT/strings.json index a672d8c54174..d0a2d29c1365 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/it-IT/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/it-IT/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Modello di progetto vuoto per la creazione di un'istanza di Worker Service." + "description": "Modello di progetto vuoto per la creazione di un'istanza di Worker Service.", + "parameter.UseProgramMain.name": "Non usare_istruzioni di primo livello", + "parameter.UseProgramMain.description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ja-JP/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ja-JP/strings.json index 3b1075214d09..8183d2a906ad 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ja-JP/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ja-JP/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "ワーカー サービス", - "description": "Worker Service を作成するための空のプロジェクト テンプレート。" + "description": "Worker Service を作成するための空のプロジェクト テンプレート。", + "parameter.UseProgramMain.name": "最上位レベルのステートメントを使用しない(_T)", + "parameter.UseProgramMain.description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ko-KR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ko-KR/strings.json index 260988cca48c..70aa07b3414c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ko-KR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ko-KR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "작업자 서비스", - "description": "Worker Service를 만드는 데 사용하는 빈 프로젝트 템플릿입니다." + "description": "Worker Service를 만드는 데 사용하는 빈 프로젝트 템플릿입니다.", + "parameter.UseProgramMain.name": "최상위 문 사용 안 함(_T)", + "parameter.UseProgramMain.description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/pl-PL/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/pl-PL/strings.json index 899bb59795af..47f74a45374f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/pl-PL/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/pl-PL/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Usługa robocza", - "description": "Szablon pustego projektu służący do tworzenia usługi procesu roboczego." + "description": "Szablon pustego projektu służący do tworzenia usługi procesu roboczego.", + "parameter.UseProgramMain.name": "Nie używaj ins_trukcji najwyższego poziomu", + "parameter.UseProgramMain.description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/pt-BR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/pt-BR/strings.json index c1afee3d7a60..a1b3bd416fc1 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/pt-BR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/pt-BR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Um modelo de projeto vazio para criar um worker service." + "description": "Um modelo de projeto vazio para criar um worker service.", + "parameter.UseProgramMain.name": "Não use ins_truções de nível superior", + "parameter.UseProgramMain.description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ru-RU/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ru-RU/strings.json index fc61e21c59ff..8417343c4fba 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ru-RU/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/ru-RU/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "Шаблон пустого проекта для создания службы Worker Service." + "description": "Шаблон пустого проекта для создания службы Worker Service.", + "parameter.UseProgramMain.name": "Не использовать _операторы верхнего уровня", + "parameter.UseProgramMain.description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/tr-TR/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/tr-TR/strings.json index 26194f3c5d19..27f95e1dcf95 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/tr-TR/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/tr-TR/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Çalışan Hizmeti", - "description": "Çalışan hizmeti oluşturmaya yönelik boş proje şablonu." + "description": "Çalışan hizmeti oluşturmaya yönelik boş proje şablonu.", + "parameter.UseProgramMain.name": "_Üst düzey deyimler kullanmayın", + "parameter.UseProgramMain.description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/zh-CN/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/zh-CN/strings.json index b7b92c4d6df9..35a40ba37f46 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/zh-CN/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/zh-CN/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "Worker Service", - "description": "用于创建 worker service 的空项目模板。" + "description": "用于创建 worker service 的空项目模板。", + "parameter.UseProgramMain.name": "不使用顶级语句(_T)", + "parameter.UseProgramMain.description": "是否生成显式程序类和主方法,而不是顶级语句。" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/zh-TW/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/zh-TW/strings.json index 53b9607b3ae5..c66711a44f5d 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/zh-TW/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/Worker-FSharp/.template.config/zh-TW/strings.json @@ -2,6 +2,8 @@ "version": "1.0.0.0", "strings": { "name": "背景工作服務", - "description": "用於建立 Worker Service 的空白專案範本。" + "description": "用於建立 Worker Service 的空白專案範本。", + "parameter.UseProgramMain.name": "不要使用最上層陳述式(_T)", + "parameter.UseProgramMain.description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。" } } \ No newline at end of file From fc1b7e9109827021c2e563426ee6e4dc1e038c1c Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Tue, 13 Sep 2022 15:02:26 -0700 Subject: [PATCH 19/37] Update baselines et cetera - baselines regenerated - enable baseline validation - update 3.1 site extension package version - move to latest .NET SDK --- eng/Baseline.Designer.props | 494 ++++++++++++++++++------------------ eng/Baseline.xml | 214 ++++++++-------- eng/Versions.props | 4 +- global.json | 4 +- 4 files changed, 358 insertions(+), 358 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index 28042e9d0222..7272cd196587 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,28 +2,28 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - - - + + + @@ -34,120 +34,120 @@ - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 @@ -155,114 +155,114 @@ - 6.0.8 + 6.0.9 - - + + - - + + - - + + - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - - - + + + - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - - + + @@ -270,81 +270,81 @@ - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - + - + - + - + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - + - + - + - 6.0.8 + 6.0.9 - - + + - + - - + + - + - - + + - + @@ -352,58 +352,58 @@ - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - + - + - + - 6.0.8 + 6.0.9 - + - + - + - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 @@ -411,71 +411,71 @@ - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - - + + - - + + - - + + - - + + - 6.0.8 + 6.0.9 - - + + - + - - + + - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 @@ -491,195 +491,195 @@ - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - - + + - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - + - + - 6.0.8 + 6.0.9 - - + + - - + + - - + + - 6.0.8 + 6.0.9 - - + + - - + + - - + + - - + + - 6.0.8 + 6.0.9 - + - + - + - + - + - 6.0.8 + 6.0.9 - + - + - + - 6.0.8 + 6.0.9 - + - + - + - 6.0.8 + 6.0.9 - + - + - + - 6.0.8 + 6.0.9 - - - - + + + + - 6.0.8 + 6.0.9 @@ -688,69 +688,69 @@ - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 @@ -769,7 +769,7 @@ - 6.0.8 + 6.0.9 @@ -788,7 +788,7 @@ - 6.0.8 + 6.0.9 @@ -804,46 +804,46 @@ - 6.0.8 + 6.0.9 - + - + - + - + - + - + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - - - + + + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 @@ -853,7 +853,7 @@ - 6.0.8 + 6.0.9 @@ -862,79 +862,79 @@ - 6.0.8 + 6.0.9 - + - + - + - 6.0.8 + 6.0.9 - + - + - + - 6.0.8 + 6.0.9 - + - + - + - + - + - + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - + @@ -943,7 +943,7 @@ - + @@ -951,17 +951,17 @@ - + - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 @@ -979,13 +979,13 @@ - 6.0.8 + 6.0.9 - 6.0.8 + 6.0.9 - + \ No newline at end of file diff --git a/eng/Baseline.xml b/eng/Baseline.xml index 549d55431ba9..5e40c7dfa06a 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,111 +4,111 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eng/Versions.props b/eng/Versions.props index 2a9a304018b3..aca2c68baa7c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -9,7 +9,7 @@ 6 0 10 - false + true @@ -214,7 +214,7 @@ 2.1.1 2.2.0 - 3.1.28-servicing-22364-2 + 3.1.29-servicing-22418-8 $(MicrosoftAspNetCoreAzureAppServicesSiteExtension31Version) $(MicrosoftAspNetCoreAzureAppServicesSiteExtension31Version) 5.0.17-servicing-22215-7 diff --git a/global.json b/global.json index 6509e31c6695..cd88f86491ae 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "6.0.108" + "version": "6.0.109" }, "tools": { - "dotnet": "6.0.108", + "dotnet": "6.0.109", "runtimes": { "dotnet/x64": [ "2.1.30", From ae98ae8b87b57f483dcec33c80f6b60c9a1c9458 Mon Sep 17 00:00:00 2001 From: Brennan Date: Tue, 13 Sep 2022 16:18:28 -0700 Subject: [PATCH 20/37] [Backport] [SignalR] Avoid unobserved tasks in the .NET client (#43882) --- eng/targets/CSharp.Common.targets | 2 +- src/Shared/Nullable/NullableAttributes.cs | 6 ++++ .../Client.Core/src/HubConnection.Log.cs | 7 +++- .../csharp/Client.Core/src/HubConnection.cs | 30 +++++++++++++--- .../test/UnitTests/HubConnectionTests.cs | 34 +++++++++++++++++++ 5 files changed, 73 insertions(+), 6 deletions(-) diff --git a/eng/targets/CSharp.Common.targets b/eng/targets/CSharp.Common.targets index 18757af70ae9..04c0356b9a22 100644 --- a/eng/targets/CSharp.Common.targets +++ b/eng/targets/CSharp.Common.targets @@ -116,7 +116,7 @@ --> + (('$(TargetFrameworkIdentifier)' == '.NETStandard' AND $([MSBuild]::VersionLessThanOrEquals('$(TargetFrameworkVersion)', '2.1'))) OR '$(TargetFrameworkIdentifier)' == '.NETFramework')"> $(DefineConstants),INTERNAL_NULLABLE_ATTRIBUTES $(NoWarn);nullable diff --git a/src/Shared/Nullable/NullableAttributes.cs b/src/Shared/Nullable/NullableAttributes.cs index 9877d753a8d5..aa7a101a1b40 100644 --- a/src/Shared/Nullable/NullableAttributes.cs +++ b/src/Shared/Nullable/NullableAttributes.cs @@ -5,6 +5,8 @@ namespace System.Diagnostics.CodeAnalysis { +// Attributes added in netstandard2.1 +#if !NETSTANDARD2_1_OR_GREATER /// Specifies that null is allowed as an input even if the corresponding type disallows it. [AttributeUsage(AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Property, Inherited = false)] #if INTERNAL_NULLABLE_ATTRIBUTES @@ -126,7 +128,10 @@ sealed class DoesNotReturnIfAttribute : Attribute /// Gets the condition parameter value. public bool ParameterValue { get; } } +#endif +// Attributes added in 5.0 +#if NETSTANDARD || NETFRAMEWORK /// Specifies that the method or property will ensure that the listed field and property members have not-null values. [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] #if INTERNAL_NULLABLE_ATTRIBUTES @@ -193,4 +198,5 @@ public MemberNotNullWhenAttribute(bool returnValue, params string[] members) /// Gets field or property member names. public string[] Members { get; } } +#endif } diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.Log.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.Log.cs index 48db64feaf0e..518783905e37 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.Log.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.Log.cs @@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.SignalR.Client { public partial class HubConnection { - private static class Log + private static partial class Log { private static readonly LogDefineOptions SkipEnabledCheckLogOptions = new() { SkipEnabledCheck = true }; @@ -254,6 +254,11 @@ private static class Log private static readonly Action _erroredStream = LoggerMessage.Define(LogLevel.Trace, new EventId(84, "ErroredStream"), "Client threw an error for stream '{StreamId}'."); + [LoggerMessage(87, LogLevel.Trace, "Completion message for stream '{StreamId}' was not sent because the connection is closed.", EventName = "CompletingStreamNotSent")] + public static partial void CompletingStreamNotSent(ILogger logger, string streamId); + + // EventId 88 used in 7.0+ + public static void PreparingNonBlockingInvocation(ILogger logger, string target, int count) { _preparingNonBlockingInvocation(logger, target, count, null); diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs index 4917dc633348..7e10a4a8da86 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs @@ -782,11 +782,26 @@ private async Task CommonStreaming(ConnectionState connectionState, string strea responseError = $"Stream errored by client: '{ex}'"; } - Log.CompletingStream(_logger, streamId); - // Don't use cancellation token here // this is triggered by a cancellation token to tell the server that the client is done streaming - await SendWithLock(connectionState, CompletionMessage.WithError(streamId, responseError), cancellationToken: default); + await _state.WaitConnectionLockAsync(token: default).ConfigureAwait(false); + try + { + // Avoid sending when the connection isn't active, likely happens if there is an active stream when the connection closes + if (_state.IsConnectionActive()) + { + Log.CompletingStream(_logger, streamId); + await SendHubMessage(connectionState, CompletionMessage.WithError(streamId, responseError), cancellationToken: default).ConfigureAwait(false); + } + else + { + Log.CompletingStreamNotSent(_logger, streamId); + } + } + finally + { + _state.ReleaseConnectionLock(); + } } private async Task InvokeCoreAsyncCore(string methodName, Type returnType, object?[] args, CancellationToken cancellationToken) @@ -2007,7 +2022,7 @@ public async Task WaitForActiveConnectionAsync(string methodNam { await WaitConnectionLockAsync(token, methodName); - if (CurrentConnectionStateUnsynchronized == null || CurrentConnectionStateUnsynchronized.Stopping) + if (!IsConnectionActive()) { ReleaseConnectionLock(methodName); throw new InvalidOperationException($"The '{methodName}' method cannot be called if the connection is not active"); @@ -2016,6 +2031,13 @@ public async Task WaitForActiveConnectionAsync(string methodNam return CurrentConnectionStateUnsynchronized; } + [MemberNotNullWhen(true, nameof(CurrentConnectionStateUnsynchronized))] + public bool IsConnectionActive() + { + AssertInConnectionLock(); + return CurrentConnectionStateUnsynchronized is not null && !CurrentConnectionStateUnsynchronized.Stopping; + } + public void ReleaseConnectionLock([CallerMemberName] string? memberName = null, [CallerFilePath] string? filePath = null, [CallerLineNumber] int lineNumber = 0) { diff --git a/src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs b/src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs index cd7e9597a0cb..f10efb81d2bc 100644 --- a/src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs +++ b/src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs @@ -544,6 +544,40 @@ public async Task UploadStreamErrorSendsStreamComplete() } } + [Fact] + [LogLevel(LogLevel.Trace)] + public async Task ActiveUploadStreamWhenConnectionClosesObservesException() + { + using (StartVerifiableLog()) + { + var connection = new TestConnection(); + var hubConnection = CreateHubConnection(connection, loggerFactory: LoggerFactory); + await hubConnection.StartAsync().DefaultTimeout(); + + var channel = Channel.CreateUnbounded(); + var invokeTask = hubConnection.InvokeAsync("UploadMethod", channel.Reader); + + var invokeMessage = await connection.ReadSentJsonAsync().DefaultTimeout(); + Assert.Equal(HubProtocolConstants.InvocationMessageType, invokeMessage["type"]); + + // Not sure how to test for unobserved task exceptions, best I could come up with is to check that we log where there once was an unobserved task exception + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + TestSink.MessageLogged += wc => + { + if (wc.EventId.Name == "CompletingStreamNotSent") + { + tcs.SetResult(); + } + }; + + await hubConnection.StopAsync(); + + await Assert.ThrowsAsync(() => invokeTask).DefaultTimeout(); + + await tcs.Task.DefaultTimeout(); + } + } + [Fact] [LogLevel(LogLevel.Trace)] public async Task InvocationCanCompleteBeforeStreamCompletes() From ac4c8349905cb22dda89ee7afd975858d7681c78 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 14 Sep 2022 02:53:44 +0000 Subject: [PATCH 21/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 6 ++---- eng/Version.Details.xml | 22 +++++++++++----------- eng/Versions.props | 4 ++-- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/NuGet.config b/NuGet.config index a98e3e73e462..43d4f270ce45 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,8 +4,7 @@ - - + @@ -31,8 +30,7 @@ - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 653f28d70dd8..14ad692fcd38 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -95,7 +95,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c222ff33bf7b1075a7d4867b733965211e9c2ef9 + e0d1082a6458ad8d91a431895c2b5ec14616d5e4 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index d184b6973530..204abb48b28e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22457.11 + 6.0.10-servicing.22463.10 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22457.11 + 6.0.10-servicing.22463.10 6.0.0 6.0.0 6.0.1 From d4936d8439196d73cdd7cf808b523dc314237521 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 14 Sep 2022 07:01:11 +0000 Subject: [PATCH 22/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 43d4f270ce45..1f95ef0ffbf1 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,7 +7,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 14ad692fcd38..ee14ec8d1062 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 + b5a18dec79b081beaf5f6ccf89e08a971101c36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 + b5a18dec79b081beaf5f6ccf89e08a971101c36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 + b5a18dec79b081beaf5f6ccf89e08a971101c36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 + b5a18dec79b081beaf5f6ccf89e08a971101c36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 + b5a18dec79b081beaf5f6ccf89e08a971101c36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 + b5a18dec79b081beaf5f6ccf89e08a971101c36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 + b5a18dec79b081beaf5f6ccf89e08a971101c36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7cc8b1a6b6b9e836b8c68c746c8bae5df89761a0 + b5a18dec79b081beaf5f6ccf89e08a971101c36b https://github.com/dotnet/runtime From d76d272b767103c50f1f93fede3b3e49fe56b6d6 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 14 Sep 2022 09:02:49 +0000 Subject: [PATCH 23/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 22 +++++++++++----------- eng/Versions.props | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1f95ef0ffbf1..e6c59caa5287 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ee14ec8d1062..2d58a4705c6a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -95,7 +95,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0d1082a6458ad8d91a431895c2b5ec14616d5e4 + 00ae92888ed9fec29636897b0dca996dc8c57356 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 204abb48b28e..93bf8f39c743 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22463.10 + 6.0.10-servicing.22463.20 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22463.10 + 6.0.10-servicing.22463.20 6.0.0 6.0.0 6.0.1 From 34a823f875e0229f685849c9e8f09ebb5ca89a34 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 14 Sep 2022 11:12:29 +0000 Subject: [PATCH 24/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index e6c59caa5287..74dea2d5387f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,7 +7,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2d58a4705c6a..030cb18a6524 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5a18dec79b081beaf5f6ccf89e08a971101c36b + 12bb9b5ac942dec81d043568aa002583e241bec9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5a18dec79b081beaf5f6ccf89e08a971101c36b + 12bb9b5ac942dec81d043568aa002583e241bec9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5a18dec79b081beaf5f6ccf89e08a971101c36b + 12bb9b5ac942dec81d043568aa002583e241bec9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5a18dec79b081beaf5f6ccf89e08a971101c36b + 12bb9b5ac942dec81d043568aa002583e241bec9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5a18dec79b081beaf5f6ccf89e08a971101c36b + 12bb9b5ac942dec81d043568aa002583e241bec9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5a18dec79b081beaf5f6ccf89e08a971101c36b + 12bb9b5ac942dec81d043568aa002583e241bec9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5a18dec79b081beaf5f6ccf89e08a971101c36b + 12bb9b5ac942dec81d043568aa002583e241bec9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5a18dec79b081beaf5f6ccf89e08a971101c36b + 12bb9b5ac942dec81d043568aa002583e241bec9 https://github.com/dotnet/runtime From dde3959c93b66e52a169e5a2f8527a441ccd4123 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Wed, 14 Sep 2022 10:34:27 -0700 Subject: [PATCH 25/37] [release/6.0] Stop building / testing on Ubuntu 18.04 (#43947) - use 20.04 instead --- .azure/pipelines/jobs/default-build.yml | 2 +- eng/scripts/RunHelix.ps1 | 2 -- eng/targets/Helix.Common.props | 13 ++++++------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index b81b7a8ba1b6..3dfabcd1ffe2 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -97,7 +97,7 @@ jobs: vmImage: macOS-11 ${{ if eq(parameters.agentOs, 'Linux') }}: ${{ if and(eq(parameters.useHostedUbuntu, true), or(ne(variables['System.TeamProject'], 'internal'), in(variables['Build.Reason'], 'Manual', 'PullRequest', 'Schedule'))) }}: - vmImage: ubuntu-18.04 + vmImage: ubuntu-20.04 ${{ if or(eq(parameters.useHostedUbuntu, false), and(eq(variables['System.TeamProject'], 'internal'), notin(variables['Build.Reason'], 'Manual', 'PullRequest', 'Schedule'))) }}: ${{ if eq(variables['System.TeamProject'], 'public') }}: name: NetCore-Svc-Public diff --git a/eng/scripts/RunHelix.ps1 b/eng/scripts/RunHelix.ps1 index ebe46bd6fcef..8716f8443855 100644 --- a/eng/scripts/RunHelix.ps1 +++ b/eng/scripts/RunHelix.ps1 @@ -11,9 +11,7 @@ Debian.11.Amd64.Open Mariner Redhat.7.Amd64.Open - Ubuntu.1804.Amd64.Open Ubuntu.2004.Amd64.Open - OSX.1015.Amd64.Open OSX.1100.Amd64.Open Windows.10.Amd64.Server20H2.Open Windows.11.Amd64.Client.Open diff --git a/eng/targets/Helix.Common.props b/eng/targets/Helix.Common.props index 2f615fd3a7dc..9566c1b8b5c4 100644 --- a/eng/targets/Helix.Common.props +++ b/eng/targets/Helix.Common.props @@ -1,11 +1,11 @@ - (Alpine.314.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.14-helix-amd64-20210910135833-1848e19 - (Debian.11.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-amd64-20211001171307-0ece9b3 - (Fedora.34.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix-20210924174119-4f64125 - (Mariner)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-1.0-helix-20210528192219-92bf620 - (Debian.11.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-arm64v8-20211001171229-97d8652 + (Alpine.314.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.14-helix-amd64-20210910135833-1848e19 + (Debian.11.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-amd64-20211001171307-0ece9b3 + (Fedora.34.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix-20210924174119-4f64125 + (Mariner)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-1.0-helix-20210528192219-92bf620 + (Debian.11.Arm64.Open)Ubuntu.2004.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-arm64v8-20211001171229-97d8652 @@ -20,7 +20,7 @@ - + @@ -29,7 +29,6 @@ - From 23b687437426bdb64af30367b3997a86bbe410c2 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 22:49:31 +0000 Subject: [PATCH 26/37] Update dependencies from https://github.com/dotnet/arcade build 20220913.7 (#43983) [release/6.0] Update dependencies from dotnet/arcade --- NuGet.config | 4 ---- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 4 ++-- eng/common/templates/job/execute-sdl.yml | 2 +- eng/common/templates/job/onelocbuild.yml | 2 +- eng/common/templates/job/source-build.yml | 4 ++-- eng/common/templates/jobs/jobs.yml | 2 +- eng/common/templates/post-build/post-build.yml | 8 ++++---- global.json | 4 ++-- 9 files changed, 21 insertions(+), 25 deletions(-) diff --git a/NuGet.config b/NuGet.config index 63330d10bbf3..4b821f800992 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,8 @@ - - @@ -27,10 +25,8 @@ - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 1a6340eb3138..391db802b3a0 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -280,22 +280,22 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime f316191dbb5782d76ceb457018dcd80ff8ce8692 - + https://github.com/dotnet/arcade - 41323ecb0b2312980381bfdbb75afd2dae2b266b + 2fbe602d12256bf82de53791ddcbb964c1541b4e - + https://github.com/dotnet/arcade - 41323ecb0b2312980381bfdbb75afd2dae2b266b + 2fbe602d12256bf82de53791ddcbb964c1541b4e - + https://github.com/dotnet/arcade - 41323ecb0b2312980381bfdbb75afd2dae2b266b + 2fbe602d12256bf82de53791ddcbb964c1541b4e - + https://github.com/dotnet/arcade - 41323ecb0b2312980381bfdbb75afd2dae2b266b + 2fbe602d12256bf82de53791ddcbb964c1541b4e diff --git a/eng/Versions.props b/eng/Versions.props index aca2c68baa7c..6f707b298f75 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -131,8 +131,8 @@ 6.0.9 6.0.9 - 6.0.0-beta.22412.2 - 6.0.0-beta.22412.2 + 6.0.0-beta.22463.7 + 6.0.0-beta.22463.7 - + - + @@ -27,10 +27,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 030cb18a6524..54242f2bc3ed 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 12bb9b5ac942dec81d043568aa002583e241bec9 + e8c8d5abdc096e97f66c686a0b2b1e323598b813 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 12bb9b5ac942dec81d043568aa002583e241bec9 + e8c8d5abdc096e97f66c686a0b2b1e323598b813 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 12bb9b5ac942dec81d043568aa002583e241bec9 + e8c8d5abdc096e97f66c686a0b2b1e323598b813 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 12bb9b5ac942dec81d043568aa002583e241bec9 + e8c8d5abdc096e97f66c686a0b2b1e323598b813 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 12bb9b5ac942dec81d043568aa002583e241bec9 + e8c8d5abdc096e97f66c686a0b2b1e323598b813 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 12bb9b5ac942dec81d043568aa002583e241bec9 + e8c8d5abdc096e97f66c686a0b2b1e323598b813 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 12bb9b5ac942dec81d043568aa002583e241bec9 + e8c8d5abdc096e97f66c686a0b2b1e323598b813 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 12bb9b5ac942dec81d043568aa002583e241bec9 + e8c8d5abdc096e97f66c686a0b2b1e323598b813 https://github.com/dotnet/runtime @@ -95,7 +95,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 00ae92888ed9fec29636897b0dca996dc8c57356 + 70ee00895a1640a45cb3e96c4653b11c07a2514b https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 93bf8f39c743..e178c9b77c8d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22463.20 + 6.0.10-servicing.22464.15 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22463.20 + 6.0.10-servicing.22464.15 6.0.0 6.0.0 6.0.1 From 6a129fca638d01f9ddf131734b6728f3ec38e963 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Fri, 16 Sep 2022 00:31:25 +0000 Subject: [PATCH 28/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore dnceng/internal/dotnet-runtime --- NuGet.config | 8 ++++---- eng/Version.Details.xml | 38 +++++++++++++++++++------------------- eng/Versions.props | 4 ++-- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/NuGet.config b/NuGet.config index dda07536cccf..0984a24e69a6 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,10 @@ - + - + @@ -27,10 +27,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 54242f2bc3ed..9aa12cf72b66 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e8c8d5abdc096e97f66c686a0b2b1e323598b813 + f1c08c75fd326d6981c1cdfcac6ba74bf942f587 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e8c8d5abdc096e97f66c686a0b2b1e323598b813 + f1c08c75fd326d6981c1cdfcac6ba74bf942f587 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e8c8d5abdc096e97f66c686a0b2b1e323598b813 + f1c08c75fd326d6981c1cdfcac6ba74bf942f587 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e8c8d5abdc096e97f66c686a0b2b1e323598b813 + f1c08c75fd326d6981c1cdfcac6ba74bf942f587 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e8c8d5abdc096e97f66c686a0b2b1e323598b813 + f1c08c75fd326d6981c1cdfcac6ba74bf942f587 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e8c8d5abdc096e97f66c686a0b2b1e323598b813 + f1c08c75fd326d6981c1cdfcac6ba74bf942f587 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e8c8d5abdc096e97f66c686a0b2b1e323598b813 + f1c08c75fd326d6981c1cdfcac6ba74bf942f587 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e8c8d5abdc096e97f66c686a0b2b1e323598b813 + f1c08c75fd326d6981c1cdfcac6ba74bf942f587 https://github.com/dotnet/runtime @@ -95,7 +95,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 70ee00895a1640a45cb3e96c4653b11c07a2514b + 52863ec9daf5b734615ac3dad2d3499d0680fca2 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index e178c9b77c8d..856d82f4c73b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22464.15 + 6.0.10-servicing.22465.6 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22464.15 + 6.0.10-servicing.22465.6 6.0.0 6.0.0 6.0.1 From b8a533c4e6f91b3a173fbc4d18d00e1dcf282a69 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Fri, 16 Sep 2022 02:40:47 +0000 Subject: [PATCH 29/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0984a24e69a6..10474ea9599d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,7 +7,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9aa12cf72b66..3365ca8eb7fe 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f1c08c75fd326d6981c1cdfcac6ba74bf942f587 + adf8df074761881c7659aec6d351faea9e1479b8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f1c08c75fd326d6981c1cdfcac6ba74bf942f587 + adf8df074761881c7659aec6d351faea9e1479b8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f1c08c75fd326d6981c1cdfcac6ba74bf942f587 + adf8df074761881c7659aec6d351faea9e1479b8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f1c08c75fd326d6981c1cdfcac6ba74bf942f587 + adf8df074761881c7659aec6d351faea9e1479b8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f1c08c75fd326d6981c1cdfcac6ba74bf942f587 + adf8df074761881c7659aec6d351faea9e1479b8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f1c08c75fd326d6981c1cdfcac6ba74bf942f587 + adf8df074761881c7659aec6d351faea9e1479b8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f1c08c75fd326d6981c1cdfcac6ba74bf942f587 + adf8df074761881c7659aec6d351faea9e1479b8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f1c08c75fd326d6981c1cdfcac6ba74bf942f587 + adf8df074761881c7659aec6d351faea9e1479b8 https://github.com/dotnet/runtime From cfe31eafed6fb40f267569b6d9d6106a4726092c Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Sat, 17 Sep 2022 01:38:05 +0000 Subject: [PATCH 30/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore dnceng/internal/dotnet-runtime --- NuGet.config | 8 ++++---- eng/Version.Details.xml | 38 +++++++++++++++++++------------------- eng/Versions.props | 4 ++-- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/NuGet.config b/NuGet.config index 10474ea9599d..b2e494ed74ae 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,10 @@ - + - + @@ -27,10 +27,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3365ca8eb7fe..e27eb7d9056d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - adf8df074761881c7659aec6d351faea9e1479b8 + a26d26af2fca83424cd795220a7459ddf607edc8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - adf8df074761881c7659aec6d351faea9e1479b8 + a26d26af2fca83424cd795220a7459ddf607edc8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - adf8df074761881c7659aec6d351faea9e1479b8 + a26d26af2fca83424cd795220a7459ddf607edc8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - adf8df074761881c7659aec6d351faea9e1479b8 + a26d26af2fca83424cd795220a7459ddf607edc8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - adf8df074761881c7659aec6d351faea9e1479b8 + a26d26af2fca83424cd795220a7459ddf607edc8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - adf8df074761881c7659aec6d351faea9e1479b8 + a26d26af2fca83424cd795220a7459ddf607edc8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - adf8df074761881c7659aec6d351faea9e1479b8 + a26d26af2fca83424cd795220a7459ddf607edc8 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - adf8df074761881c7659aec6d351faea9e1479b8 + a26d26af2fca83424cd795220a7459ddf607edc8 https://github.com/dotnet/runtime @@ -95,7 +95,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 52863ec9daf5b734615ac3dad2d3499d0680fca2 + ea2f839fb3ff57233673ddd9fc5f94656fb02b9c https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 856d82f4c73b..1e6821f2aedc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22465.6 + 6.0.10-servicing.22466.9 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22465.6 + 6.0.10-servicing.22466.9 6.0.0 6.0.0 6.0.1 From c0d2d21799afc01b28ea14b55ae572a1b4e0d4af Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Sat, 17 Sep 2022 03:47:53 +0000 Subject: [PATCH 31/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index b2e494ed74ae..bdc3cb11ee5b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,7 +7,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e27eb7d9056d..4532e2e80c73 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a26d26af2fca83424cd795220a7459ddf607edc8 + 17783521b35c1383db4275436a21413d824d8acc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a26d26af2fca83424cd795220a7459ddf607edc8 + 17783521b35c1383db4275436a21413d824d8acc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a26d26af2fca83424cd795220a7459ddf607edc8 + 17783521b35c1383db4275436a21413d824d8acc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a26d26af2fca83424cd795220a7459ddf607edc8 + 17783521b35c1383db4275436a21413d824d8acc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a26d26af2fca83424cd795220a7459ddf607edc8 + 17783521b35c1383db4275436a21413d824d8acc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a26d26af2fca83424cd795220a7459ddf607edc8 + 17783521b35c1383db4275436a21413d824d8acc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a26d26af2fca83424cd795220a7459ddf607edc8 + 17783521b35c1383db4275436a21413d824d8acc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a26d26af2fca83424cd795220a7459ddf607edc8 + 17783521b35c1383db4275436a21413d824d8acc https://github.com/dotnet/runtime From 970de353cceec5ed711cebdd0bca55b72adea98d Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Sat, 17 Sep 2022 06:06:09 +0000 Subject: [PATCH 32/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 22 +++++++++++----------- eng/Versions.props | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/NuGet.config b/NuGet.config index bdc3cb11ee5b..942eeb7f3051 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4532e2e80c73..8f9be9e5ff93 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -95,7 +95,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ea2f839fb3ff57233673ddd9fc5f94656fb02b9c + 2768a7a7e73255a475206f30c4eb51f651b8cef8 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 1e6821f2aedc..b50752ecc690 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22466.9 + 6.0.10-servicing.22466.14 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22466.9 + 6.0.10-servicing.22466.14 6.0.0 6.0.0 6.0.1 From 94b4eb749b15099927e2188125de692ad101beb5 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Mon, 19 Sep 2022 18:35:25 +0000 Subject: [PATCH 33/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore - Revert some shas to 6.0.9 versions --- NuGet.config | 4 ++-- eng/Version.Details.xml | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/NuGet.config b/NuGet.config index 942eeb7f3051..5c1ec9be11ac 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,7 +7,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8f9be9e5ff93..ddf5e4def6d9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 17783521b35c1383db4275436a21413d824d8acc + 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 17783521b35c1383db4275436a21413d824d8acc + 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 17783521b35c1383db4275436a21413d824d8acc + 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 17783521b35c1383db4275436a21413d824d8acc + 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 17783521b35c1383db4275436a21413d824d8acc + 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 17783521b35c1383db4275436a21413d824d8acc + 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 17783521b35c1383db4275436a21413d824d8acc + 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 17783521b35c1383db4275436a21413d824d8acc + 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f https://github.com/dotnet/runtime @@ -131,7 +131,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 163a63591cf9e9b682063cf3995948c2b885a042 https://github.com/dotnet/runtime @@ -235,7 +235,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5e2d96cd9b05142c3cccc4092d6f69744a538668 + 163a63591cf9e9b682063cf3995948c2b885a042 https://github.com/dotnet/runtime From 3678930d3590d1e4dd7b675dfba72f8b1cf621bf Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 20 Sep 2022 04:35:53 +0000 Subject: [PATCH 34/37] [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-runtime dnceng/internal/dotnet-efcore --- NuGet.config | 8 ++++---- eng/Version.Details.xml | 38 +++++++++++++++++++------------------- eng/Versions.props | 4 ++-- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/NuGet.config b/NuGet.config index 5c1ec9be11ac..4ba9d94b9696 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,10 @@ - + - + @@ -27,10 +27,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index dece3d5fea94..77d4d446790d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f + 2fa4958d3741d8ad39dc27193684c3a40eb15b61 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f + 2fa4958d3741d8ad39dc27193684c3a40eb15b61 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f + 2fa4958d3741d8ad39dc27193684c3a40eb15b61 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f + 2fa4958d3741d8ad39dc27193684c3a40eb15b61 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f + 2fa4958d3741d8ad39dc27193684c3a40eb15b61 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f + 2fa4958d3741d8ad39dc27193684c3a40eb15b61 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f + 2fa4958d3741d8ad39dc27193684c3a40eb15b61 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9fb51c34a03ffa1ca75e759abe78c068a38d9e2f + 2fa4958d3741d8ad39dc27193684c3a40eb15b61 https://github.com/dotnet/runtime @@ -95,7 +95,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2768a7a7e73255a475206f30c4eb51f651b8cef8 + 3bd501a063af406167e0195844048a3c222afd29 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 8199e6cf17f2..586ef0ef5bc6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22466.14 + 6.0.10-servicing.22469.10 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22466.14 + 6.0.10-servicing.22469.10 6.0.0 6.0.0 6.0.1 From 78f7a072db17922016ed9a0f69a49647554f86a4 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Tue, 20 Sep 2022 07:57:52 -0700 Subject: [PATCH 35/37] Revert Ubuntu.1804.Armarch.Open change (#44074) --- eng/targets/Helix.Common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/targets/Helix.Common.props b/eng/targets/Helix.Common.props index 9566c1b8b5c4..f55104073f91 100644 --- a/eng/targets/Helix.Common.props +++ b/eng/targets/Helix.Common.props @@ -5,7 +5,7 @@ (Debian.11.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-amd64-20211001171307-0ece9b3 (Fedora.34.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix-20210924174119-4f64125 (Mariner)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-1.0-helix-20210528192219-92bf620 - (Debian.11.Arm64.Open)Ubuntu.2004.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-arm64v8-20211001171229-97d8652 + (Debian.11.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-arm64v8-20211001171229-97d8652 From 9efc206d0eec75172819678bbc4899d55ba01e9c Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Mon, 26 Sep 2022 22:42:33 +0000 Subject: [PATCH 36/37] Merged PR 26211: [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:7745f62d-e15b-4ba3-39b3-08d960f4ca81) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 7745f62d-e15b-4ba3-39b3-08d960f4ca81 - **Build**: 20220926.5 - **Date Produced**: September 26, 2022 9:30:53 PM UTC - **Commit**: 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 - **Branch**: refs/heads/internal/release/6.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.DependencyInjection**: [from 6.0.1 to 6.0.1][1] - **Microsoft.Internal.Runtime.AspNetCore.Transport**: [from 6.0.10-servicing.22469.10 to 6.0.10-servicing.22476.5][1] - **Microsoft.NET.Runtime.MonoAOTCompiler.Task**: [from 6.0.10 to 6.0.10][1] - **Microsoft.NET.Runtime.WebAssembly.Sdk**: [from 6.0.10 to 6.0.10][1] - **Microsoft.NETCore.App.Ref**: [from 6.0.10 to 6.0.10][1] - **Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm**: [from 6.0.10 to 6.0.10][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 6.0.10 to 6.0.10][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 6.0.10-servicing.22469.10 to 6.0.10-servicing.22476.5][1] - **Microsoft.NETCore.Platforms**: [from 6.0.6 to 6.0.6][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC3bd501a&targetVersion=GC5a400c2&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:7745f62d-e15b-4ba3-39b3-08d960f4ca81) --- NuGet.config | 8 ++++++-- eng/Version.Details.xml | 22 +++++++++++----------- eng/Versions.props | 4 ++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/NuGet.config b/NuGet.config index 4ba9d94b9696..f7df496d87d4 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,12 @@ - + + + @@ -27,10 +29,12 @@ + + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 77d4d446790d..e80336ba33ed 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -95,7 +95,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 https://github.com/dotnet/runtime @@ -177,9 +177,9 @@ https://github.com/dotnet/runtime 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 https://github.com/dotnet/runtime @@ -247,15 +247,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3bd501a063af406167e0195844048a3c222afd29 + 5a400c212afdf8e675c9a1d38442e6d2f19f7b74 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 586ef0ef5bc6..b99a016b481b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -68,7 +68,7 @@ 6.0.10 6.0.10 6.0.10 - 6.0.10-servicing.22469.10 + 6.0.10-servicing.22476.5 6.0.0 6.0.1 6.0.0 @@ -103,7 +103,7 @@ 6.0.0 6.0.0 6.0.0 - 6.0.10-servicing.22469.10 + 6.0.10-servicing.22476.5 6.0.0 6.0.0 6.0.1 From 32e8c8cae5b1a4dd752d0a42a6f8a2813f75f173 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 27 Sep 2022 01:07:06 +0000 Subject: [PATCH 37/37] Merged PR 26220: [internal/release/6.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:1ac68a20-28fc-4e11-3a4d-08d961c5a689) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: 1ac68a20-28fc-4e11-3a4d-08d961c5a689 - **Build**: 20220926.7 - **Date Produced**: September 26, 2022 11:49:29 PM UTC - **Commit**: f7333f1afa250ed33d3db52f0b531910b23a55b2 - **Branch**: refs/heads/internal/release/6.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 6.0.10 to 6.0.10][1] - **Microsoft.EntityFrameworkCore**: [from 6.0.10 to 6.0.10][1] - **Microsoft.EntityFrameworkCore.Design**: [from 6.0.10 to 6.0.10][1] - **Microsoft.EntityFrameworkCore.InMemory**: [from 6.0.10 to 6.0.10][1] - **Microsoft.EntityFrameworkCore.Relational**: [from 6.0.10 to 6.0.10][1] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 6.0.10 to 6.0.10][1] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 6.0.10 to 6.0.10][1] - **Microsoft.EntityFrameworkCore.Tools**: [from 6.0.10 to 6.0.10][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GC2fa4958&targetVersion=GCf7333f1&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:1ac68a20-28fc-4e11-3a4d-08d961c5a689) --- NuGet.config | 8 ++------ eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/NuGet.config b/NuGet.config index f7df496d87d4..c302e3d4c299 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,9 +7,7 @@ - - - + @@ -29,9 +27,7 @@ - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e80336ba33ed..c7f52d020c13 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 2fa4958d3741d8ad39dc27193684c3a40eb15b61 + f7333f1afa250ed33d3db52f0b531910b23a55b2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 2fa4958d3741d8ad39dc27193684c3a40eb15b61 + f7333f1afa250ed33d3db52f0b531910b23a55b2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 2fa4958d3741d8ad39dc27193684c3a40eb15b61 + f7333f1afa250ed33d3db52f0b531910b23a55b2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 2fa4958d3741d8ad39dc27193684c3a40eb15b61 + f7333f1afa250ed33d3db52f0b531910b23a55b2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 2fa4958d3741d8ad39dc27193684c3a40eb15b61 + f7333f1afa250ed33d3db52f0b531910b23a55b2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 2fa4958d3741d8ad39dc27193684c3a40eb15b61 + f7333f1afa250ed33d3db52f0b531910b23a55b2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 2fa4958d3741d8ad39dc27193684c3a40eb15b61 + f7333f1afa250ed33d3db52f0b531910b23a55b2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 2fa4958d3741d8ad39dc27193684c3a40eb15b61 + f7333f1afa250ed33d3db52f0b531910b23a55b2 https://github.com/dotnet/runtime