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