diff --git a/Directory.Build.props b/Directory.Build.props index 35cbe59651..928a2cda15 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -60,17 +60,18 @@ 4.7.0 4.5.4 4.7.0 - 4.5.0 + 4.5.1 4.5.3 4.7.0 4.7.0 4.7.0 + 4.7.0 4.7.0 4.7.0 16.4.0 - 3.4.0 + 3.9.0 4.7.0 1.1.1 1.0.0 @@ -94,7 +95,7 @@ 1.0.5 4.1.0 1.3.0 - 1.1.1 + 1.4.0 12.4.4 12.3.2 3.1.0 diff --git a/Directory.Build.targets b/Directory.Build.targets index 4dc1c4afd4..7d41bfe862 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -8,8 +8,8 @@ dotnet Orleans.CodeGenerator.MSBuild.Bootstrap - $(MSBuildThisFileDirectory)src/BootstrapBuild/$(Asm)/bin/$(Configuration)/publish/netcoreapp3.1/$(Asm).dll - $(MSBuildThisFileDirectory)src/BootstrapBuild/$(Asm)/bin/$(Configuration)/publish/netcoreapp3.1/Orleans.CodeGenerator.MSBuild.Tasks.dll + $(MSBuildThisFileDirectory)src/BootstrapBuild/$(Asm)/bin/$(Configuration)/publish/$(Asm).dll + $(MSBuildThisFileDirectory)src/BootstrapBuild/$(Asm)/bin/$(Configuration)/publish/Orleans.CodeGenerator.MSBuild.Tasks.dll $(MSBuildThisFileDirectory)src/BootstrapBuild/Orleans.CodeGenerator.MSBuild.Bootstrap/Orleans.CodeGenerator.MSBuild.Bootstrap.csproj @@ -18,7 +18,7 @@ {CB36EF45-6E90-443F-AEE4-394677068147} Orleans.CodeGenerator.MSBuild.Bootstrap false - netcoreapp3.1 + net5.0 false @@ -27,7 +27,7 @@ - + diff --git a/DotnetCLIVersion.txt b/DotnetCLIVersion.txt index e374466b5b..de74f21843 100644 --- a/DotnetCLIVersion.txt +++ b/DotnetCLIVersion.txt @@ -1 +1 @@ -3.1.301 \ No newline at end of file +5.0.301 \ No newline at end of file diff --git a/global.json b/global.json index d151b804d3..5ecd5ee6e1 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "3.1.301" + "version": "5.0.301" } } diff --git a/src/BootstrapBuild/Orleans.CodeGenerator.MSBuild.Bootstrap/Orleans.CodeGenerator.MSBuild.Bootstrap.csproj b/src/BootstrapBuild/Orleans.CodeGenerator.MSBuild.Bootstrap/Orleans.CodeGenerator.MSBuild.Bootstrap.csproj index a99d985219..24f7a7c4c1 100644 --- a/src/BootstrapBuild/Orleans.CodeGenerator.MSBuild.Bootstrap/Orleans.CodeGenerator.MSBuild.Bootstrap.csproj +++ b/src/BootstrapBuild/Orleans.CodeGenerator.MSBuild.Bootstrap/Orleans.CodeGenerator.MSBuild.Bootstrap.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + net5.0 Exe false true @@ -13,11 +13,11 @@ true true bin\$(Configuration)\publish\ - $(PublishRoot)$(TargetFramework) + $(PublishRoot) $(MSBuildThisFileDirectory)..\..\Orleans.CodeGenerator.MSBuild\ false - + @@ -27,7 +27,7 @@ - + diff --git a/src/Orleans.Analyzers/AnalyzerReleases.Shipped.md b/src/Orleans.Analyzers/AnalyzerReleases.Shipped.md new file mode 100644 index 0000000000..306807dec9 --- /dev/null +++ b/src/Orleans.Analyzers/AnalyzerReleases.Shipped.md @@ -0,0 +1,7 @@ +## Release 3.3.0 + +### New Rules + +Rule ID | Category | Severity | Notes +--------|----------|----------|-------------------- +ORLEANS0001 | Usage | Error | [AlwaysInterleave] must only be used on the grain interface method and not the grain class method \ No newline at end of file diff --git a/src/Orleans.Analyzers/AnalyzerReleases.Unshipped.md b/src/Orleans.Analyzers/AnalyzerReleases.Unshipped.md new file mode 100644 index 0000000000..43574499f9 --- /dev/null +++ b/src/Orleans.Analyzers/AnalyzerReleases.Unshipped.md @@ -0,0 +1,3 @@ +; Unshipped analyzer release +; https://github.com/dotnet/roslyn-analyzers/blob/master/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md + diff --git a/src/Orleans.Analyzers/Orleans.Analyzers.csproj b/src/Orleans.Analyzers/Orleans.Analyzers.csproj index f3a623c48b..dc94a465be 100644 --- a/src/Orleans.Analyzers/Orleans.Analyzers.csproj +++ b/src/Orleans.Analyzers/Orleans.Analyzers.csproj @@ -8,7 +8,7 @@ false true - + @@ -20,4 +20,9 @@ + + + + + \ No newline at end of file diff --git a/src/Orleans.CodeGenerator.MSBuild/AssemblyResolver.cs b/src/Orleans.CodeGenerator.MSBuild/AssemblyResolver.cs index 7dcbc888a3..d459500a72 100644 --- a/src/Orleans.CodeGenerator.MSBuild/AssemblyResolver.cs +++ b/src/Orleans.CodeGenerator.MSBuild/AssemblyResolver.cs @@ -24,7 +24,7 @@ internal class AssemblyResolver : IDisposable public AssemblyResolver() { this.resolverRependencyContext = DependencyContext.Load(typeof(AssemblyResolver).Assembly); - var codegenPath = Path.GetDirectoryName(new Uri(typeof(AssemblyResolver).Assembly.CodeBase).LocalPath); + var codegenPath = Path.GetDirectoryName(new Uri(typeof(AssemblyResolver).Assembly.Location).LocalPath); this.assemblyResolver = new CompositeCompilationAssemblyResolver( new ICompilationAssemblyResolver[] { diff --git a/src/Orleans.CodeGenerator/Generators/SerializerGenerator.cs b/src/Orleans.CodeGenerator/Generators/SerializerGenerator.cs index d6a2ae3d49..b443dbb302 100644 --- a/src/Orleans.CodeGenerator/Generators/SerializerGenerator.cs +++ b/src/Orleans.CodeGenerator/Generators/SerializerGenerator.cs @@ -794,7 +794,7 @@ public FieldInfoMember(SerializerGenerator generator, SemanticModel model, IName /// /// Gets a value indicating whether or not this field represents a property with an accessible, non-obsolete setter. /// - public bool IsSettableProperty => this.Property?.SetMethod != null && this.model.IsAccessible(0, this.Property.SetMethod) && !this.IsObsolete; + public bool IsSettableProperty => Property?.SetMethod is { } setMethod && model.IsAccessible(0, setMethod) && !setMethod.IsInitOnly && !IsObsolete; /// /// Gets syntax representing the type of this field. diff --git a/test/CodeGeneration/CodeGenerator.Tests/CodeGenerator.Tests.csproj b/test/CodeGeneration/CodeGenerator.Tests/CodeGenerator.Tests.csproj index b7761456b6..0b314879c4 100644 --- a/test/CodeGeneration/CodeGenerator.Tests/CodeGenerator.Tests.csproj +++ b/test/CodeGeneration/CodeGenerator.Tests/CodeGenerator.Tests.csproj @@ -7,7 +7,6 @@ - @@ -22,8 +21,8 @@ - + diff --git a/test/DefaultCluster.Tests/SerializationTests/RoundTripSerializerTests.cs b/test/DefaultCluster.Tests/SerializationTests/RoundTripSerializerTests.cs index b771be046d..fff126af18 100644 --- a/test/DefaultCluster.Tests/SerializationTests/RoundTripSerializerTests.cs +++ b/test/DefaultCluster.Tests/SerializationTests/RoundTripSerializerTests.cs @@ -13,6 +13,14 @@ public RoundTripSerializerTests(DefaultClusterFixture fixture) : base(fixture) { } + [Fact] + public async Task Serialize_TestMethodResultRecord() + { + var grain = this.GrainFactory.GetGrain(GetRandomGrainId()); + RetVal retVal = await grain.GetRetValForParamVal(new ParamVal(42)); + Assert.Equal(42, retVal.Value); + } + [Fact] public async Task Serialize_TestMethodResultEnum() { diff --git a/test/Extensions/TesterAzureUtils/Tester.AzureUtils.csproj b/test/Extensions/TesterAzureUtils/Tester.AzureUtils.csproj index 6976d8d305..d88da8e702 100644 --- a/test/Extensions/TesterAzureUtils/Tester.AzureUtils.csproj +++ b/test/Extensions/TesterAzureUtils/Tester.AzureUtils.csproj @@ -5,7 +5,7 @@ TRACE;TESTER_AZUREUTILS;ORLEANS_PERSISTENCE $(TestTargetFrameworks) - + @@ -14,6 +14,7 @@ + @@ -26,7 +27,7 @@ - + diff --git a/test/Grains/TestGrainInterfaces/IValueTypeTestGrain.cs b/test/Grains/TestGrainInterfaces/IValueTypeTestGrain.cs index f21ebb74cb..98e7814f08 100644 --- a/test/Grains/TestGrainInterfaces/IValueTypeTestGrain.cs +++ b/test/Grains/TestGrainInterfaces/IValueTypeTestGrain.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Threading.Tasks; using Orleans; @@ -144,8 +144,16 @@ public interface IRoundtripSerializationGrain : IGrainWithIntegerKey Task GetEnemyType(); Task GetClosedGenericValue(); + + Task GetRetValForParamVal(ParamVal param); } + [Serializable] + public record ParamVal(int Value); + + [Serializable] + public record RetVal(int Value); + [Serializable] [Immutable] public class ImmutableType diff --git a/test/Grains/TestGrainInterfaces/IsExternalInit.cs b/test/Grains/TestGrainInterfaces/IsExternalInit.cs new file mode 100644 index 0000000000..f7fc37a017 --- /dev/null +++ b/test/Grains/TestGrainInterfaces/IsExternalInit.cs @@ -0,0 +1,5 @@ +namespace System.Runtime.CompilerServices +{ + // required for record serialization support for downlevel + internal static class IsExternalInit {} +} \ No newline at end of file diff --git a/test/Grains/TestGrains/RoundtripSerializationGrain.cs b/test/Grains/TestGrains/RoundtripSerializationGrain.cs index 37f3f2e71e..3bba2a9919 100644 --- a/test/Grains/TestGrains/RoundtripSerializationGrain.cs +++ b/test/Grains/TestGrains/RoundtripSerializationGrain.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Threading.Tasks; @@ -20,5 +20,8 @@ public Task GetClosedGenericValue() var result = new List>>>(); return Task.FromResult((object)result); } + + // test record support + public Task GetRetValForParamVal(ParamVal param) => Task.FromResult(new RetVal(param.Value)); } } diff --git a/test/Tester/Tester.csproj b/test/Tester/Tester.csproj index 824074f4dc..cb4ce051b9 100644 --- a/test/Tester/Tester.csproj +++ b/test/Tester/Tester.csproj @@ -15,6 +15,8 @@ + +