diff --git a/App/App.csproj b/App/App.csproj index 91585e3f..5eb3e824 100644 --- a/App/App.csproj +++ b/App/App.csproj @@ -3,7 +3,7 @@ Exe enable - netcoreapp3.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0 + netcoreapp3.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0 false false diff --git a/WebApiClientCore.Abstractions/WebApiClientCore.Abstractions.csproj b/WebApiClientCore.Abstractions/WebApiClientCore.Abstractions.csproj index db411581..4d4c9116 100644 --- a/WebApiClientCore.Abstractions/WebApiClientCore.Abstractions.csproj +++ b/WebApiClientCore.Abstractions/WebApiClientCore.Abstractions.csproj @@ -1,9 +1,8 @@ + - enable - netstandard2.1;net5.0;net8.0 - true + $(WebApiClientCoreIsAotCompatible) WebApiClientCore WebApiClientCore.Abstractions @@ -19,5 +18,6 @@ + - + \ No newline at end of file diff --git a/WebApiClientCore.Analyzers/Providers/RefParameterDiagnosticProvider.cs b/WebApiClientCore.Analyzers/Providers/RefParameterDiagnosticProvider.cs index a8c24384..47dc0c72 100644 --- a/WebApiClientCore.Analyzers/Providers/RefParameterDiagnosticProvider.cs +++ b/WebApiClientCore.Analyzers/Providers/RefParameterDiagnosticProvider.cs @@ -50,7 +50,7 @@ public override IEnumerable CreateDiagnostics() if (declaringSyntax is ParameterSyntax parameterSyntax) { var modifier = parameterSyntax.Modifiers.FirstOrDefault(); - if (modifier != null) + if (modifier != default) { var location = modifier.GetLocation(); yield return this.CreateDiagnostic(location); diff --git a/WebApiClientCore.Analyzers/SourceGenerator/HttpApiProxyClass.cs b/WebApiClientCore.Analyzers/SourceGenerator/HttpApiProxyClass.cs index d704f0b1..cae38e59 100644 --- a/WebApiClientCore.Analyzers/SourceGenerator/HttpApiProxyClass.cs +++ b/WebApiClientCore.Analyzers/SourceGenerator/HttpApiProxyClass.cs @@ -166,8 +166,21 @@ private class MethodEqualityComparer : IEqualityComparer { public static MethodEqualityComparer Default { get; } = new MethodEqualityComparer(); - public bool Equals(IMethodSymbol x, IMethodSymbol y) + public bool Equals(IMethodSymbol? x, IMethodSymbol? y) { +#if NET8_0_OR_GREATER + ArgumentNullException.ThrowIfNull(x); + ArgumentNullException.ThrowIfNull(y); +#else + if (x is null) + { + throw new ArgumentNullException(nameof(x)); + } + if (y is null) + { + throw new ArgumentNullException(nameof(y)); + } +#endif if (x.Name != y.Name || !x.ReturnType.Equals(y.ReturnType, SymbolEqualityComparer.Default)) { return false; diff --git a/WebApiClientCore.Analyzers/WebApiClientCore.Analyzers.csproj b/WebApiClientCore.Analyzers/WebApiClientCore.Analyzers.csproj index 55ddda26..1aade612 100644 --- a/WebApiClientCore.Analyzers/WebApiClientCore.Analyzers.csproj +++ b/WebApiClientCore.Analyzers/WebApiClientCore.Analyzers.csproj @@ -1,9 +1,7 @@  + - enable - netstandard2.0 - True false false true @@ -11,26 +9,28 @@ - - + + - - - True - True - Resx.resx - - + + + True + True + Resx.resx + + - - - - - - ResXFileCodeGenerator - Resx.Designer.cs - - + + + ResXFileCodeGenerator + Resx.Designer.cs + + + Resx.resx + + - + \ No newline at end of file diff --git a/WebApiClientCore.Extensions.JsonRpc/WebApiClientCore.Extensions.JsonRpc.csproj b/WebApiClientCore.Extensions.JsonRpc/WebApiClientCore.Extensions.JsonRpc.csproj index 087443e5..53db073e 100644 --- a/WebApiClientCore.Extensions.JsonRpc/WebApiClientCore.Extensions.JsonRpc.csproj +++ b/WebApiClientCore.Extensions.JsonRpc/WebApiClientCore.Extensions.JsonRpc.csproj @@ -1,9 +1,7 @@  + - enable - netstandard2.1 - True true Sign.snk diff --git a/WebApiClientCore.Extensions.NewtonsoftJson/WebApiClientCore.Extensions.NewtonsoftJson.csproj b/WebApiClientCore.Extensions.NewtonsoftJson/WebApiClientCore.Extensions.NewtonsoftJson.csproj index e34ca33b..1da733ec 100644 --- a/WebApiClientCore.Extensions.NewtonsoftJson/WebApiClientCore.Extensions.NewtonsoftJson.csproj +++ b/WebApiClientCore.Extensions.NewtonsoftJson/WebApiClientCore.Extensions.NewtonsoftJson.csproj @@ -1,9 +1,7 @@ + - enable - netstandard2.1 - True true Sign.snk diff --git a/WebApiClientCore.Extensions.OAuths/WebApiClientCore.Extensions.OAuths.csproj b/WebApiClientCore.Extensions.OAuths/WebApiClientCore.Extensions.OAuths.csproj index d9905876..57b2bd15 100644 --- a/WebApiClientCore.Extensions.OAuths/WebApiClientCore.Extensions.OAuths.csproj +++ b/WebApiClientCore.Extensions.OAuths/WebApiClientCore.Extensions.OAuths.csproj @@ -1,10 +1,8 @@ + - enable - True - netstandard2.1;net5.0;net8.0 - true + $(WebApiClientCoreIsAotCompatible) true Sign.snk @@ -16,4 +14,4 @@ - + \ No newline at end of file diff --git a/WebApiClientCore.Extensions.SourceGenerator/WebApiClientCore.Extensions.SourceGenerator.csproj b/WebApiClientCore.Extensions.SourceGenerator/WebApiClientCore.Extensions.SourceGenerator.csproj index c2f35178..57a942ea 100644 --- a/WebApiClientCore.Extensions.SourceGenerator/WebApiClientCore.Extensions.SourceGenerator.csproj +++ b/WebApiClientCore.Extensions.SourceGenerator/WebApiClientCore.Extensions.SourceGenerator.csproj @@ -1,8 +1,7 @@ + + - enable - false - netstandard2.1 true Sign.snk 此扩展包的实现已合并到WebApiClientCore包,无任何功能 diff --git a/WebApiClientCore.OpenApi.SourceGenerator/WebApiClientCore.OpenApi.SourceGenerator.csproj b/WebApiClientCore.OpenApi.SourceGenerator/WebApiClientCore.OpenApi.SourceGenerator.csproj index e4f264f2..59e0ac37 100644 --- a/WebApiClientCore.OpenApi.SourceGenerator/WebApiClientCore.OpenApi.SourceGenerator.csproj +++ b/WebApiClientCore.OpenApi.SourceGenerator/WebApiClientCore.OpenApi.SourceGenerator.csproj @@ -3,7 +3,7 @@ Exe enable - netcoreapp3.1;net6.0;net8.0 + netcoreapp3.1;net6.0;net8.0;net9.0 将本地或远程OpenApi文档解析生成WebApiClientCore的接口定义代码文件的工具 zh-Hans @@ -18,6 +18,9 @@ + + + diff --git a/WebApiClientCore.Test/Implementations/Tasks/ActionRetryTaskTest.cs b/WebApiClientCore.Test/Implementations/Tasks/ActionRetryTaskTest.cs index dd8a3f67..3c9802f4 100644 --- a/WebApiClientCore.Test/Implementations/Tasks/ActionRetryTaskTest.cs +++ b/WebApiClientCore.Test/Implementations/Tasks/ActionRetryTaskTest.cs @@ -8,11 +8,11 @@ namespace WebApiClientCore.Test.Implementations.Tasks { public class ActionRetryTaskTest { - class ResultApiTask : TaskBase + class ResultApiTask : TaskBase { public T? Result { get; set; } - protected override Task InvokeAsync() + protected override Task InvokeAsync() { return Task.FromResult(Result); } diff --git a/WebApiClientCore.Test/WebApiClientCore.Test.csproj b/WebApiClientCore.Test/WebApiClientCore.Test.csproj index 9745f1dc..ed26a395 100644 --- a/WebApiClientCore.Test/WebApiClientCore.Test.csproj +++ b/WebApiClientCore.Test/WebApiClientCore.Test.csproj @@ -1,7 +1,7 @@  - net6.0;net8.0 + net6.0;net8.0;net9.0 enable true Test.snk diff --git a/WebApiClientCore/DependencyInjection/NamedHttpApiExtensions.cs b/WebApiClientCore/DependencyInjection/NamedHttpApiExtensions.cs index 7e48d542..7508d871 100644 --- a/WebApiClientCore/DependencyInjection/NamedHttpApiExtensions.cs +++ b/WebApiClientCore/DependencyInjection/NamedHttpApiExtensions.cs @@ -21,8 +21,8 @@ internal static void NamedHttpApiType(this IServiceCollection services, string n services.TryAddSingleton(new NameTypeRegistration()); var descriptor = services.Single(item => item.ServiceType == typeof(NameTypeRegistration)); - var registration = (NameTypeRegistration)descriptor.ImplementationInstance; - registration[name] = httpApiType; + var registration = (NameTypeRegistration?)descriptor.ImplementationInstance; + registration![name] = httpApiType; } /// @@ -38,7 +38,11 @@ internal static void NamedHttpApiType(this IServiceCollection services, string n return null; } - var registration = (NameTypeRegistration)descriptor.ImplementationInstance; + var registration = (NameTypeRegistration?)descriptor.ImplementationInstance; + if (registration == null) + { + return null; + } registration.TryGetValue(builder.Name, out var type); return type; } diff --git a/WebApiClientCore/WebApiClientCore.csproj b/WebApiClientCore/WebApiClientCore.csproj index 8e6d8bd3..20011af6 100644 --- a/WebApiClientCore/WebApiClientCore.csproj +++ b/WebApiClientCore/WebApiClientCore.csproj @@ -1,40 +1,49 @@  - + - enable - True - netstandard2.1;net5.0;net8.0 - true + $(WebApiClientCoreIsAotCompatible) .NetCore声明式的Http客户端库 一款基于HttpClient封装,只需要定义c#接口并修饰相关特性,即可异步调用远程http接口的客户端库 true Sign.snk - + - + - + - + + + + + + + - - + + @@ -51,8 +60,10 @@ - + - + - + \ No newline at end of file diff --git a/props/WebApiClientCore.Common.props b/props/WebApiClientCore.Common.props new file mode 100644 index 00000000..d94e89d6 --- /dev/null +++ b/props/WebApiClientCore.Common.props @@ -0,0 +1,15 @@ + + + enable + True + netstandard2.1;net5.0;net8.0;net9.0 + latest + + + false + false + false + true + true + + \ No newline at end of file diff --git a/props/WebApiClientCore.Extensions.Common.props b/props/WebApiClientCore.Extensions.Common.props new file mode 100644 index 00000000..5d7a92bc --- /dev/null +++ b/props/WebApiClientCore.Extensions.Common.props @@ -0,0 +1,7 @@ + + + enable + netstandard2.1 + True + + \ No newline at end of file