diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs b/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs index 2565c5b..a8e8da0 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs +++ b/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs @@ -18,6 +18,7 @@ public static class Constants public const string Namespace = "Net.Sdk.Web"; public const string UsingSystemThreading = "System.Threading"; public const string UsingSystemRuntimeCompilerServices = "System.Runtime.CompilerServices"; + public const string UsingSystemDiagnosticsCodeAnalysis = "System.Diagnostics.CodeAnalysis"; public const string UsingMicrosoftAspNetCoreHttp = "Microsoft.AspNetCore.Http"; public const string UsingMicrosoftAspNetCoreRouting = "Microsoft.AspNetCore.Routing"; public const string UsingMicrosoftAspNetCoreBuilder = "Microsoft.AspNetCore.Builder"; @@ -120,5 +121,10 @@ public static class Constants public const string RequiresAuthorization = "RequireAuthorization"; public const string WithOpenApiExtension = "WithOpenApi"; + public const string RequiresUnreferencedCode = "RequiresUnreferencedCode"; + public const string RequiresUnreferencedCodeMessage = "Uses Map methods (reflection-heavy fall-back)"; + public const string RequiresDynamicCode = "RequiresDynamicCode"; + public const string RequiresDynamicCodeMessage = "Minimal-API helper needs dynamic code when RDG is off"; + public const string Default200Status = "StatusCodes.Status200OK"; } diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj b/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj index 06619ec..aa78bc1 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj +++ b/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.9.4 + 0.9.5 latest true Alexandru Macocian diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs b/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs index 2de3d65..8cd249e 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs +++ b/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs @@ -76,12 +76,13 @@ public class UseRoutesGenerator : IIncrementalGenerator var languageVersion = maybeLanguageVersion.Value; var routeUsings = new HashSet { + Constants.UsingSystemDiagnosticsCodeAnalysis, + Constants.UsingSystemRuntimeCompilerServices, Constants.UsingSystemThreading, - Constants.UsingMicrosoftAspNetCoreRouting, - Constants.UsingMicrosoftAspNetCoreHttp, Constants.UsingMicrosoftAspNetCoreBuilder, + Constants.UsingMicrosoftAspNetCoreHttp, Constants.UsingMicrosoftAspNetCoreMvc, - Constants.UsingSystemRuntimeCompilerServices + Constants.UsingMicrosoftAspNetCoreRouting }; var builder = SyntaxBuilder.CreateCompilationUnit(); @@ -188,6 +189,11 @@ public class UseRoutesGenerator : IIncrementalGenerator useRoutesWebAppBody.AppendLine("return builder;"); useRoutesWebAppMethodBuilder.WithBody(useRoutesWebAppBody.ToString()); + useRoutesWebAppMethodBuilder + .WithAttribute(SyntaxBuilder.CreateAttribute(Constants.RequiresUnreferencedCode) + .WithArgument(Constants.RequiresUnreferencedCodeMessage)) + .WithAttribute(SyntaxBuilder.CreateAttribute(Constants.RequiresDynamicCode) + .WithArgument(Constants.RequiresDynamicCodeMessage)); foreach (var classUsing in routeUsings) { builder.WithUsing(classUsing);