diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs b/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs index d612496..fbb38b5 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs +++ b/Net.Sdk.Web.Extensions.SourceGenerators/Constants.cs @@ -14,6 +14,7 @@ public static class Constants public const string Default = "default"; public const string Namespace = "Net.Sdk.Web"; public const string UsingSystemThreading = "System.Threading"; + public const string UsingSystemRuntimeCompilerServices = "System.Runtime.CompilerServices"; public const string UsingMicrosoftAspNetCoreHttp = "Microsoft.AspNetCore.Http"; public const string UsingMicrosoftAspNetCoreRouting = "Microsoft.AspNetCore.Routing"; public const string UsingMicrosoftAspNetCoreBuilder = "Microsoft.AspNetCore.Builder"; @@ -81,4 +82,7 @@ public static class Constants public const string T = "T"; public const string IEndpointFilterName = "IEndpointFilter"; + + public const string MethodImplAttribute = "MethodImpl"; + public const string MethodImplArgument = "MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization | MethodImplOptions.PreserveSig"; } 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 d86a8ef..3c1a2cc 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.8.19 + 0.8.20 latest true Alexandru Macocian @@ -20,7 +20,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs b/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs index 2b70073..3c9a61c 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs +++ b/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; namespace Net.Sdk.Web.Extensions.SourceGenerators; @@ -72,7 +73,8 @@ public class UseRoutesGenerator : IIncrementalGenerator .WithUsing(Constants.UsingMicrosoftAspNetCoreRouting) .WithUsing(Constants.UsingMicrosoftAspNetCoreHttp) .WithUsing(Constants.UsingMicrosoftAspNetCoreBuilder) - .WithUsing(Constants.UsingMicrosoftAspNetCoreMvc); + .WithUsing(Constants.UsingMicrosoftAspNetCoreMvc) + .WithUsing(Constants.UsingSystemRuntimeCompilerServices); var routeUsings = new HashSet(); @@ -83,7 +85,9 @@ public class UseRoutesGenerator : IIncrementalGenerator namespaceBuilder.WithClass(webAppBuilder); var useRoutesWebAppMethodBuilder = SyntaxBuilder.CreateMethod(Constants.WebApplicationTypeName, Constants.UseRoutesMethodName) .WithThisParameter(Constants.WebApplicationTypeName, Constants.BuilderParameterName) - .WithModifiers($"{Constants.Public} {Constants.Static}"); + .WithModifiers($"{Constants.Public} {Constants.Static}") + .WithAttribute(SyntaxBuilder.CreateAttribute(Constants.MethodImplAttribute) + .WithRawArgument(Constants.MethodImplArgument)); webAppBuilder.WithMethod(useRoutesWebAppMethodBuilder); var useRoutesWebAppBody = new StringBuilder();