diff --git a/Directory.Build.props b/Directory.Build.props index bf92fb2..5f334af 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,8 +1,8 @@ - net9.0 - 13.0 + net10.0 + 14.0 true enable enable diff --git a/Directory.Packages.props b/Directory.Packages.props index 52ff8b5..a36a391 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -5,36 +5,36 @@ - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + - - - - + + + + - + \ No newline at end of file diff --git a/aspire/Aspire.ServiceDefaults/Extensions.cs b/aspire/Aspire.ServiceDefaults/Extensions.cs index 0a2ee48..761d34f 100644 --- a/aspire/Aspire.ServiceDefaults/Extensions.cs +++ b/aspire/Aspire.ServiceDefaults/Extensions.cs @@ -51,9 +51,9 @@ public static IHostApplicationBuilder ConfigureOpenTelemetry(this IHostApplicati }) .WithTracing(tracing => { + // Uncomment the following line to enable gRPC instrumentation (requires the OpenTelemetry.Instrumentation.GrpcNetClient package) + //.AddGrpcClientInstrumentation() tracing.AddAspNetCoreInstrumentation() - // Uncomment the following line to enable gRPC instrumentation (requires the OpenTelemetry.Instrumentation.GrpcNetClient package) - //.AddGrpcClientInstrumentation() .AddHttpClientInstrumentation(); }); @@ -83,8 +83,8 @@ private static IHostApplicationBuilder AddOpenTelemetryExporters(this IHostAppli public static IHostApplicationBuilder AddDefaultHealthChecks(this IHostApplicationBuilder builder) { + // Add a default liveness check to ensure app is responsive builder.Services.AddHealthChecks() - // Add a default liveness check to ensure app is responsive .AddCheck("self", () => HealthCheckResult.Healthy(), ["live"]); return builder; diff --git a/csharp/CSharp/CollectionExpressions.cs b/csharp/CSharp/CollectionExpressions.cs index 14a72f7..02fd9fc 100644 --- a/csharp/CSharp/CollectionExpressions.cs +++ b/csharp/CSharp/CollectionExpressions.cs @@ -50,4 +50,19 @@ public void SomeOtherMethod(string[] args) { _logger.LogInformation($"SomeOtherMethod is called with args: {string.Join(',', args)}"); } + + public void ExtensionMembers() + { + IEnumerable empty = []; + IEnumerable numbers = [1, 2, 3]; + + _logger.LogInformation($"Extension property (instance-like): empty.IsEmpty => {empty.IsEmpty}"); + _logger.LogInformation($"Extension property (instance-like): numbers.IsEmpty => {numbers.IsEmpty}"); + + var combined = IEnumerable.Combine(numbers, [4, 5]); + _logger.LogInformation($"Type extension method (static-like): IEnumerable.Combine() => {string.Join(',', combined)}"); + + var initialized = IEnumerable.Initialized; + _logger.LogInformation($"Type extension property (static-like): IEnumerable.Initialized count => {initialized.Count()}"); + } } \ No newline at end of file diff --git a/csharp/CSharp/ExtensionMembers.cs b/csharp/CSharp/ExtensionMembers.cs new file mode 100644 index 0000000..ac2a024 --- /dev/null +++ b/csharp/CSharp/ExtensionMembers.cs @@ -0,0 +1,15 @@ +namespace CSharp; + +public static class ExtensionMembers +{ + extension(IEnumerable source) + { + public bool IsEmpty => !source.Any(); + } + + extension(IEnumerable) + { + public static IEnumerable Combine(IEnumerable first, IEnumerable second) => first.Concat(second); + public static IEnumerable Initialized => []; + } +} \ No newline at end of file diff --git a/learn-dotnet.sln b/learn-dotnet.sln deleted file mode 100644 index 63677e7..0000000 --- a/learn-dotnet.sln +++ /dev/null @@ -1,335 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "analyzers", "analyzers", "{AF835CF7-F63E-4667-A84D-298D4FF2E095}" - ProjectSection(SolutionItems) = preProject - analyzers\README.md = analyzers\README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "central-package-management", "central-package-management", "{1388F723-B25D-4020-8F5B-B7A4B2BD067F}" - ProjectSection(SolutionItems) = preProject - central-package-management\README.md = central-package-management\README.md - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectA", "central-package-management\ProjectA\ProjectA.csproj", "{C5868FAC-1628-4400-8018-7DD14E4A6119}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectB", "central-package-management\ProjectB\ProjectB.csproj", "{6AB76071-4AF2-49EF-ACDC-3F5EEBC73958}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependency-injection", "dependency-injection", "{EA678579-BA95-403B-A700-5878CD3A13DD}" - ProjectSection(SolutionItems) = preProject - dependency-injection\README.md = dependency-injection\README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nullable-usage", "nullable-usage", "{1194D255-B8CE-4268-B5EA-8EB36A3A758F}" - ProjectSection(SolutionItems) = preProject - nullable-usage\README.md = nullable-usage\README.md - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NullableUsage", "nullable-usage\NullableUsage\NullableUsage.csproj", "{0480A21D-4A63-4372-9AE1-77D60B56FB46}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "source-generator", "source-generator", "{64526710-CEFE-40C7-AA39-B2A1A87FF203}" - ProjectSection(SolutionItems) = preProject - source-generator\README.md = source-generator\README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Cli", "Cli", "{AA74E944-135B-4227-9C3C-ECD46406B1A4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cli", "source-generator\Cli\Cli.csproj", "{1B87270E-1B6A-4E05-B6F4-5FA2435738BE}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CodeGen", "CodeGen", "{163CC013-E841-49A8-8A62-68B467683CE6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeGen", "source-generator\CodeGen\CodeGen.csproj", "{0A91A2DA-6490-4EE5-AA0F-1B055966830C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{FAA54A28-B96D-494F-87CB-E823160D262D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Domain", "source-generator\Domain\Domain.csproj", "{FA89943C-FD8E-42C5-A2F9-23C58952C0D9}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebApp", "WebApp", "{5F662200-07DC-4221-843C-AEAE137E4B96}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebApp", "source-generator\WebApp\WebApp.csproj", "{5E26550D-8556-425E-99B9-9E932B931E2C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unit-testing", "unit-testing", "{A3F73601-24CF-4396-B688-EA53EF91A4D4}" - ProjectSection(SolutionItems) = preProject - unit-testing\README.md = unit-testing\README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B9D12006-ABDC-42F2-8519-6C75A6A2554D}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - README.md = README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Projects", "Projects", "{E148C898-1BFD-4F28-8940-583CC50F90DB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTesting", "unit-testing\UnitTesting\UnitTesting.csproj", "{50715692-EE4A-4DE9-BA64-3226C20E7EFD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyInjection", "dependency-injection\DependencyInjection\DependencyInjection.csproj", "{50657568-23CD-4307-AB2E-86A3B03ECB01}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "publish-over-dockerfile", "publish-over-dockerfile", "{1B4C5600-1E5A-4797-B675-C459C7FB5454}" - ProjectSection(SolutionItems) = preProject - publish-over-dockerfile\README.md = publish-over-dockerfile\README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "regex-source-generators", "regex-source-generators", "{F93CB7AF-CA43-4D1E-883F-EEB4930FC679}" - ProjectSection(SolutionItems) = preProject - regex-source-generators\README.md = regex-source-generators\README.md - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RegexSourceGenerators", "regex-source-generators\RegexSourceGenerators\RegexSourceGenerators.csproj", "{E9414ABB-3845-47C8-96AA-BAA4FEC51B7E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PublishOverDockerfile", "publish-over-dockerfile\PublishOverDockerfile\PublishOverDockerfile.csproj", "{51E8C5A1-9789-4619-8ACE-D25DB5460413}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "primary-constructor", "primary-constructor", "{3892B517-E16C-4BDB-8EE0-CB80F66C3B19}" - ProjectSection(SolutionItems) = preProject - primary-constructor\README.md = primary-constructor\README.md - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PrimaryConstructor", "primary-constructor\PrimaryConstructor\PrimaryConstructor.csproj", "{88921AF0-2327-4E02-A9FE-201C37670C01}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "exception-handling", "exception-handling", "{1D0A109B-6458-4C04-B400-F9484310595C}" - ProjectSection(SolutionItems) = preProject - exception-handling\README.md = exception-handling\README.md - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExceptionHandling", "exception-handling\ExceptionHandling\ExceptionHandling.csproj", "{658DFE92-7D9E-4DD6-979C-57460629A5E2}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "csharp", "csharp", "{8D3DAA2C-A035-47DC-92DE-A0DA501B32BF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "native-aot", "native-aot", "{A6FDF528-DB3B-4838-8D9D-F3E0F08DF97A}" - ProjectSection(SolutionItems) = preProject - native-aot\README.md = native-aot\README.md - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NativeAOT", "native-aot\NativeAOT\NativeAOT.csproj", "{AD006E83-4501-47B5-BEEA-BA9326A3D630}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharp", "csharp\CSharp\CSharp.csproj", "{7299B336-9340-4E15-B0EE-B59C2770D7EE}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarking-in-dotnet", "benchmarking-in-dotnet", "{32202E5E-02C2-48CA-9D8D-687146EB0232}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BenchmarkingInDotNet", "benchmarking-in-dotnet\BenchmarkingInDotNet\BenchmarkingInDotNet.csproj", "{6E92E509-834F-403C-A0B0-3B691F3C816D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "model-binders", "model-binders", "{1828D64E-F976-4B87-B37C-BD9E694E9482}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ModelBinders", "model-binders\ModelBinders\ModelBinders.csproj", "{382B91E4-9043-4261-BBE7-BEA9C0137C07}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AnalyzersSample", "analyzers\AnalyzersSample\AnalyzersSample.csproj", "{F7185339-B401-483F-8FB5-FBC9A1D4DBFC}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "authentication", "authentication", "{8E574EE1-3694-4905-B0FA-BEE599B5C0F9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MultiAuthentication", "authentication\MultiAuthentication\MultiAuthentication.csproj", "{4719C295-752C-4464-8A7D-151A1B8A37DD}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "swashbuckle", "swashbuckle", "{CC39E923-166C-43EB-BD80-6B89122CF7A5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Swashbuckle", "swashbuckle\Swashbuckle\Swashbuckle.csproj", "{C4535DDC-D848-4238-B99D-ED0C9767D64C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "openapi", "openapi", "{5EFD2336-9236-4C29-9CFD-077E702D6ACD}" - ProjectSection(SolutionItems) = preProject - openapi\README.md = openapi\README.md - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAPI", "openapi\OpenAPI\OpenAPI.csproj", "{AD45E9C7-D739-4513-8F01-3A6826E0F4FA}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "reflection", "reflection", "{5771998F-DD44-4CEA-8B37-C2E90E5014AC}" - ProjectSection(SolutionItems) = preProject - reflection\README.md = reflection\README.md - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Reflection", "reflection\Reflection\Reflection.csproj", "{E0B6EFF9-41D8-4EDF-8303-5977D6637FF6}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspire", "aspire", "{6EAC4719-E994-426D-87BD-6BB12FF17232}" - ProjectSection(SolutionItems) = preProject - aspire\README.md = aspire\README.md - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.AppHost", "aspire\Aspire.AppHost\Aspire.AppHost.csproj", "{FF280BA1-B772-48AC-8110-065520F3B852}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.ServiceDefaults", "aspire\Aspire.ServiceDefaults\Aspire.ServiceDefaults.csproj", "{EA1FCF65-B230-4932-9164-85C2E39449BC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "aspire\ProjectA\ProjectA.csproj", "{1F34FA6D-124F-42AD-BE5F-F31FF07B9E28}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectB", "aspire\ProjectB\ProjectB.csproj", "{0DCC0BF3-FDFF-4AF7-A080-6A5D9213386F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{9F730981-E25D-4857-B870-B98B0398688B}" - ProjectSection(SolutionItems) = preProject - localization\README.md = localization\README.md - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Localization", "localization\Localization\Localization.csproj", "{614740C2-6A5E-4F93-BD55-C3DF9B7EF33F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C5868FAC-1628-4400-8018-7DD14E4A6119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C5868FAC-1628-4400-8018-7DD14E4A6119}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C5868FAC-1628-4400-8018-7DD14E4A6119}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C5868FAC-1628-4400-8018-7DD14E4A6119}.Release|Any CPU.Build.0 = Release|Any CPU - {6AB76071-4AF2-49EF-ACDC-3F5EEBC73958}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6AB76071-4AF2-49EF-ACDC-3F5EEBC73958}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6AB76071-4AF2-49EF-ACDC-3F5EEBC73958}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6AB76071-4AF2-49EF-ACDC-3F5EEBC73958}.Release|Any CPU.Build.0 = Release|Any CPU - {0480A21D-4A63-4372-9AE1-77D60B56FB46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0480A21D-4A63-4372-9AE1-77D60B56FB46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0480A21D-4A63-4372-9AE1-77D60B56FB46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0480A21D-4A63-4372-9AE1-77D60B56FB46}.Release|Any CPU.Build.0 = Release|Any CPU - {1B87270E-1B6A-4E05-B6F4-5FA2435738BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1B87270E-1B6A-4E05-B6F4-5FA2435738BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B87270E-1B6A-4E05-B6F4-5FA2435738BE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1B87270E-1B6A-4E05-B6F4-5FA2435738BE}.Release|Any CPU.Build.0 = Release|Any CPU - {0A91A2DA-6490-4EE5-AA0F-1B055966830C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0A91A2DA-6490-4EE5-AA0F-1B055966830C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0A91A2DA-6490-4EE5-AA0F-1B055966830C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0A91A2DA-6490-4EE5-AA0F-1B055966830C}.Release|Any CPU.Build.0 = Release|Any CPU - {FA89943C-FD8E-42C5-A2F9-23C58952C0D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA89943C-FD8E-42C5-A2F9-23C58952C0D9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA89943C-FD8E-42C5-A2F9-23C58952C0D9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA89943C-FD8E-42C5-A2F9-23C58952C0D9}.Release|Any CPU.Build.0 = Release|Any CPU - {5E26550D-8556-425E-99B9-9E932B931E2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5E26550D-8556-425E-99B9-9E932B931E2C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5E26550D-8556-425E-99B9-9E932B931E2C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5E26550D-8556-425E-99B9-9E932B931E2C}.Release|Any CPU.Build.0 = Release|Any CPU - {50715692-EE4A-4DE9-BA64-3226C20E7EFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {50715692-EE4A-4DE9-BA64-3226C20E7EFD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50715692-EE4A-4DE9-BA64-3226C20E7EFD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {50715692-EE4A-4DE9-BA64-3226C20E7EFD}.Release|Any CPU.Build.0 = Release|Any CPU - {50657568-23CD-4307-AB2E-86A3B03ECB01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {50657568-23CD-4307-AB2E-86A3B03ECB01}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50657568-23CD-4307-AB2E-86A3B03ECB01}.Release|Any CPU.ActiveCfg = Release|Any CPU - {50657568-23CD-4307-AB2E-86A3B03ECB01}.Release|Any CPU.Build.0 = Release|Any CPU - {E9414ABB-3845-47C8-96AA-BAA4FEC51B7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E9414ABB-3845-47C8-96AA-BAA4FEC51B7E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E9414ABB-3845-47C8-96AA-BAA4FEC51B7E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E9414ABB-3845-47C8-96AA-BAA4FEC51B7E}.Release|Any CPU.Build.0 = Release|Any CPU - {51E8C5A1-9789-4619-8ACE-D25DB5460413}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {51E8C5A1-9789-4619-8ACE-D25DB5460413}.Debug|Any CPU.Build.0 = Debug|Any CPU - {51E8C5A1-9789-4619-8ACE-D25DB5460413}.Release|Any CPU.ActiveCfg = Release|Any CPU - {51E8C5A1-9789-4619-8ACE-D25DB5460413}.Release|Any CPU.Build.0 = Release|Any CPU - {88921AF0-2327-4E02-A9FE-201C37670C01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {88921AF0-2327-4E02-A9FE-201C37670C01}.Debug|Any CPU.Build.0 = Debug|Any CPU - {88921AF0-2327-4E02-A9FE-201C37670C01}.Release|Any CPU.ActiveCfg = Release|Any CPU - {88921AF0-2327-4E02-A9FE-201C37670C01}.Release|Any CPU.Build.0 = Release|Any CPU - {658DFE92-7D9E-4DD6-979C-57460629A5E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {658DFE92-7D9E-4DD6-979C-57460629A5E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {658DFE92-7D9E-4DD6-979C-57460629A5E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {658DFE92-7D9E-4DD6-979C-57460629A5E2}.Release|Any CPU.Build.0 = Release|Any CPU - {AD006E83-4501-47B5-BEEA-BA9326A3D630}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AD006E83-4501-47B5-BEEA-BA9326A3D630}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AD006E83-4501-47B5-BEEA-BA9326A3D630}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AD006E83-4501-47B5-BEEA-BA9326A3D630}.Release|Any CPU.Build.0 = Release|Any CPU - {7299B336-9340-4E15-B0EE-B59C2770D7EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7299B336-9340-4E15-B0EE-B59C2770D7EE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7299B336-9340-4E15-B0EE-B59C2770D7EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7299B336-9340-4E15-B0EE-B59C2770D7EE}.Release|Any CPU.Build.0 = Release|Any CPU - {6E92E509-834F-403C-A0B0-3B691F3C816D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6E92E509-834F-403C-A0B0-3B691F3C816D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6E92E509-834F-403C-A0B0-3B691F3C816D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6E92E509-834F-403C-A0B0-3B691F3C816D}.Release|Any CPU.Build.0 = Release|Any CPU - {382B91E4-9043-4261-BBE7-BEA9C0137C07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {382B91E4-9043-4261-BBE7-BEA9C0137C07}.Debug|Any CPU.Build.0 = Debug|Any CPU - {382B91E4-9043-4261-BBE7-BEA9C0137C07}.Release|Any CPU.ActiveCfg = Release|Any CPU - {382B91E4-9043-4261-BBE7-BEA9C0137C07}.Release|Any CPU.Build.0 = Release|Any CPU - {F7185339-B401-483F-8FB5-FBC9A1D4DBFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F7185339-B401-483F-8FB5-FBC9A1D4DBFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F7185339-B401-483F-8FB5-FBC9A1D4DBFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F7185339-B401-483F-8FB5-FBC9A1D4DBFC}.Release|Any CPU.Build.0 = Release|Any CPU - {4719C295-752C-4464-8A7D-151A1B8A37DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4719C295-752C-4464-8A7D-151A1B8A37DD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4719C295-752C-4464-8A7D-151A1B8A37DD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4719C295-752C-4464-8A7D-151A1B8A37DD}.Release|Any CPU.Build.0 = Release|Any CPU - {C4535DDC-D848-4238-B99D-ED0C9767D64C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C4535DDC-D848-4238-B99D-ED0C9767D64C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C4535DDC-D848-4238-B99D-ED0C9767D64C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C4535DDC-D848-4238-B99D-ED0C9767D64C}.Release|Any CPU.Build.0 = Release|Any CPU - {AD45E9C7-D739-4513-8F01-3A6826E0F4FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AD45E9C7-D739-4513-8F01-3A6826E0F4FA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AD45E9C7-D739-4513-8F01-3A6826E0F4FA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AD45E9C7-D739-4513-8F01-3A6826E0F4FA}.Release|Any CPU.Build.0 = Release|Any CPU - {E0B6EFF9-41D8-4EDF-8303-5977D6637FF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E0B6EFF9-41D8-4EDF-8303-5977D6637FF6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E0B6EFF9-41D8-4EDF-8303-5977D6637FF6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E0B6EFF9-41D8-4EDF-8303-5977D6637FF6}.Release|Any CPU.Build.0 = Release|Any CPU - {FF280BA1-B772-48AC-8110-065520F3B852}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF280BA1-B772-48AC-8110-065520F3B852}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF280BA1-B772-48AC-8110-065520F3B852}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF280BA1-B772-48AC-8110-065520F3B852}.Release|Any CPU.Build.0 = Release|Any CPU - {EA1FCF65-B230-4932-9164-85C2E39449BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EA1FCF65-B230-4932-9164-85C2E39449BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EA1FCF65-B230-4932-9164-85C2E39449BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EA1FCF65-B230-4932-9164-85C2E39449BC}.Release|Any CPU.Build.0 = Release|Any CPU - {1F34FA6D-124F-42AD-BE5F-F31FF07B9E28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F34FA6D-124F-42AD-BE5F-F31FF07B9E28}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F34FA6D-124F-42AD-BE5F-F31FF07B9E28}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F34FA6D-124F-42AD-BE5F-F31FF07B9E28}.Release|Any CPU.Build.0 = Release|Any CPU - {0DCC0BF3-FDFF-4AF7-A080-6A5D9213386F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0DCC0BF3-FDFF-4AF7-A080-6A5D9213386F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0DCC0BF3-FDFF-4AF7-A080-6A5D9213386F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0DCC0BF3-FDFF-4AF7-A080-6A5D9213386F}.Release|Any CPU.Build.0 = Release|Any CPU - {614740C2-6A5E-4F93-BD55-C3DF9B7EF33F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {614740C2-6A5E-4F93-BD55-C3DF9B7EF33F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {614740C2-6A5E-4F93-BD55-C3DF9B7EF33F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {614740C2-6A5E-4F93-BD55-C3DF9B7EF33F}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {AF835CF7-F63E-4667-A84D-298D4FF2E095} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {1388F723-B25D-4020-8F5B-B7A4B2BD067F} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {C5868FAC-1628-4400-8018-7DD14E4A6119} = {1388F723-B25D-4020-8F5B-B7A4B2BD067F} - {6AB76071-4AF2-49EF-ACDC-3F5EEBC73958} = {1388F723-B25D-4020-8F5B-B7A4B2BD067F} - {EA678579-BA95-403B-A700-5878CD3A13DD} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {1194D255-B8CE-4268-B5EA-8EB36A3A758F} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {0480A21D-4A63-4372-9AE1-77D60B56FB46} = {1194D255-B8CE-4268-B5EA-8EB36A3A758F} - {64526710-CEFE-40C7-AA39-B2A1A87FF203} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {AA74E944-135B-4227-9C3C-ECD46406B1A4} = {64526710-CEFE-40C7-AA39-B2A1A87FF203} - {1B87270E-1B6A-4E05-B6F4-5FA2435738BE} = {AA74E944-135B-4227-9C3C-ECD46406B1A4} - {163CC013-E841-49A8-8A62-68B467683CE6} = {64526710-CEFE-40C7-AA39-B2A1A87FF203} - {0A91A2DA-6490-4EE5-AA0F-1B055966830C} = {163CC013-E841-49A8-8A62-68B467683CE6} - {FAA54A28-B96D-494F-87CB-E823160D262D} = {64526710-CEFE-40C7-AA39-B2A1A87FF203} - {FA89943C-FD8E-42C5-A2F9-23C58952C0D9} = {FAA54A28-B96D-494F-87CB-E823160D262D} - {5F662200-07DC-4221-843C-AEAE137E4B96} = {64526710-CEFE-40C7-AA39-B2A1A87FF203} - {5E26550D-8556-425E-99B9-9E932B931E2C} = {5F662200-07DC-4221-843C-AEAE137E4B96} - {A3F73601-24CF-4396-B688-EA53EF91A4D4} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {50715692-EE4A-4DE9-BA64-3226C20E7EFD} = {A3F73601-24CF-4396-B688-EA53EF91A4D4} - {50657568-23CD-4307-AB2E-86A3B03ECB01} = {EA678579-BA95-403B-A700-5878CD3A13DD} - {1B4C5600-1E5A-4797-B675-C459C7FB5454} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {F93CB7AF-CA43-4D1E-883F-EEB4930FC679} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {E9414ABB-3845-47C8-96AA-BAA4FEC51B7E} = {F93CB7AF-CA43-4D1E-883F-EEB4930FC679} - {51E8C5A1-9789-4619-8ACE-D25DB5460413} = {1B4C5600-1E5A-4797-B675-C459C7FB5454} - {3892B517-E16C-4BDB-8EE0-CB80F66C3B19} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {88921AF0-2327-4E02-A9FE-201C37670C01} = {3892B517-E16C-4BDB-8EE0-CB80F66C3B19} - {1D0A109B-6458-4C04-B400-F9484310595C} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {658DFE92-7D9E-4DD6-979C-57460629A5E2} = {1D0A109B-6458-4C04-B400-F9484310595C} - {8D3DAA2C-A035-47DC-92DE-A0DA501B32BF} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {A6FDF528-DB3B-4838-8D9D-F3E0F08DF97A} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {AD006E83-4501-47B5-BEEA-BA9326A3D630} = {A6FDF528-DB3B-4838-8D9D-F3E0F08DF97A} - {7299B336-9340-4E15-B0EE-B59C2770D7EE} = {8D3DAA2C-A035-47DC-92DE-A0DA501B32BF} - {32202E5E-02C2-48CA-9D8D-687146EB0232} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {6E92E509-834F-403C-A0B0-3B691F3C816D} = {32202E5E-02C2-48CA-9D8D-687146EB0232} - {1828D64E-F976-4B87-B37C-BD9E694E9482} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {382B91E4-9043-4261-BBE7-BEA9C0137C07} = {1828D64E-F976-4B87-B37C-BD9E694E9482} - {F7185339-B401-483F-8FB5-FBC9A1D4DBFC} = {AF835CF7-F63E-4667-A84D-298D4FF2E095} - {8E574EE1-3694-4905-B0FA-BEE599B5C0F9} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {4719C295-752C-4464-8A7D-151A1B8A37DD} = {8E574EE1-3694-4905-B0FA-BEE599B5C0F9} - {CC39E923-166C-43EB-BD80-6B89122CF7A5} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {C4535DDC-D848-4238-B99D-ED0C9767D64C} = {CC39E923-166C-43EB-BD80-6B89122CF7A5} - {5EFD2336-9236-4C29-9CFD-077E702D6ACD} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {AD45E9C7-D739-4513-8F01-3A6826E0F4FA} = {5EFD2336-9236-4C29-9CFD-077E702D6ACD} - {5771998F-DD44-4CEA-8B37-C2E90E5014AC} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {E0B6EFF9-41D8-4EDF-8303-5977D6637FF6} = {5771998F-DD44-4CEA-8B37-C2E90E5014AC} - {6EAC4719-E994-426D-87BD-6BB12FF17232} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {FF280BA1-B772-48AC-8110-065520F3B852} = {6EAC4719-E994-426D-87BD-6BB12FF17232} - {EA1FCF65-B230-4932-9164-85C2E39449BC} = {6EAC4719-E994-426D-87BD-6BB12FF17232} - {1F34FA6D-124F-42AD-BE5F-F31FF07B9E28} = {6EAC4719-E994-426D-87BD-6BB12FF17232} - {0DCC0BF3-FDFF-4AF7-A080-6A5D9213386F} = {6EAC4719-E994-426D-87BD-6BB12FF17232} - {9F730981-E25D-4857-B870-B98B0398688B} = {E148C898-1BFD-4F28-8940-583CC50F90DB} - {614740C2-6A5E-4F93-BD55-C3DF9B7EF33F} = {9F730981-E25D-4857-B870-B98B0398688B} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {ECEAECE7-49E5-4CBC-B84D-5FF82F2399FC} - EndGlobalSection -EndGlobal diff --git a/learn-dotnet.slnx b/learn-dotnet.slnx new file mode 100644 index 0000000..faf2e23 --- /dev/null +++ b/learn-dotnet.slnx @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/localization/Localization/Localization.csproj b/localization/Localization/Localization.csproj index 34a4e91..57b18e6 100644 --- a/localization/Localization/Localization.csproj +++ b/localization/Localization/Localization.csproj @@ -5,7 +5,6 @@ - diff --git a/swashbuckle/Swashbuckle/AddParameterToPostOperations.cs b/swashbuckle/Swashbuckle/AddParameterToPostOperations.cs index a54a3c9..a1f7777 100644 --- a/swashbuckle/Swashbuckle/AddParameterToPostOperations.cs +++ b/swashbuckle/Swashbuckle/AddParameterToPostOperations.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Swashbuckle.AspNetCore.SwaggerGen; namespace Swashbuckle; @@ -10,7 +10,8 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context) { if (context.ApiDescription.HttpMethod != "POST") { return; } - operation.Parameters.Insert(0, new() + operation.Parameters ??= []; + operation.Parameters.Insert(0, new OpenApiParameter { In = _in, Name = _name, diff --git a/swashbuckle/Swashbuckle/DocumentBasedSecurityDefinition.cs b/swashbuckle/Swashbuckle/DocumentBasedSecurityDefinition.cs index afe4910..c210166 100644 --- a/swashbuckle/Swashbuckle/DocumentBasedSecurityDefinition.cs +++ b/swashbuckle/Swashbuckle/DocumentBasedSecurityDefinition.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Swashbuckle.AspNetCore.SwaggerGen; namespace Swashbuckle; @@ -10,6 +10,9 @@ public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context) { if (context.DocumentName != document) { return; } + swaggerDoc.Components ??= new OpenApiComponents(); + swaggerDoc.Components.SecuritySchemes ??= new Dictionary(); + swaggerDoc.Components.SecuritySchemes[_schemeId] = _scheme; } } \ No newline at end of file diff --git a/swashbuckle/Swashbuckle/DocumentBasedSecurityRequirement.cs b/swashbuckle/Swashbuckle/DocumentBasedSecurityRequirement.cs index 18e6d00..ec4b961 100644 --- a/swashbuckle/Swashbuckle/DocumentBasedSecurityRequirement.cs +++ b/swashbuckle/Swashbuckle/DocumentBasedSecurityRequirement.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Swashbuckle.AspNetCore.SwaggerGen; namespace Swashbuckle; @@ -10,12 +10,11 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context) { if (context.DocumentName != _document) { return; } + operation.Security ??= []; operation.Security.Add(new() - { { - new() { Reference = new() { Type = ReferenceType.SecurityScheme, Id = _schemeId } }, - Array.Empty() + { new OpenApiSecuritySchemeReference(_schemeId), [] }, } - }); + ); } } \ No newline at end of file diff --git a/swashbuckle/Swashbuckle/Program.cs b/swashbuckle/Swashbuckle/Program.cs index 15e64df..73b2b65 100644 --- a/swashbuckle/Swashbuckle/Program.cs +++ b/swashbuckle/Swashbuckle/Program.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Swashbuckle; using Swashbuckle.AspNetCore.SwaggerGen; @@ -22,11 +22,8 @@ // custom metadata swaggerGenOptions.DocInclusionPredicate((document, api) => - // doc exclusion - !api.CustomAttributes().OfType().Any() && - - // multi doc - api.CustomAttributes().OfType().SingleOrDefault()?.Name == document + !api.CustomAttributes().OfType().Any() && // doc exclusion + api.CustomAttributes().OfType().SingleOrDefault()?.Name == document // multi doc ); // security config diff --git a/swashbuckle/Swashbuckle/Swashbuckle.csproj b/swashbuckle/Swashbuckle/Swashbuckle.csproj index 2d70ad3..a3b6c2d 100644 --- a/swashbuckle/Swashbuckle/Swashbuckle.csproj +++ b/swashbuckle/Swashbuckle/Swashbuckle.csproj @@ -1,6 +1,7 @@ +