diff --git a/.buildkite/premerge.steps.yaml b/.buildkite/premerge.steps.yaml
index 4978d0769f..9ca8c0d6bd 100644
--- a/.buildkite/premerge.steps.yaml
+++ b/.buildkite/premerge.steps.yaml
@@ -13,7 +13,7 @@ windows: &windows
- "environment=production"
- "permission_set=builder"
- "platform=windows"
- - "queue=${WINDOWS_BUILDER_QUEUE:-v4-20-07-06-124455-bk13081-5d808a4a}"
+ - "queue=${WINDOWS_BUILDER_QUEUE:-v4-20-07-30-165418-bk13785-82b83865-d}"
- "scaler_version=2"
- "minimum_instances=1"
- "agent_count=1"
diff --git a/.buildkite/release-qa.steps.yaml b/.buildkite/release-qa.steps.yaml
index 9d707c3e68..f3a78b68fd 100644
--- a/.buildkite/release-qa.steps.yaml
+++ b/.buildkite/release-qa.steps.yaml
@@ -13,7 +13,7 @@ windows: &windows
- "environment=production"
- "permission_set=builder"
- "platform=windows"
- - "queue=${WINDOWS_BUILDER_QUEUE:-v4-20-07-06-124455-bk13081-5d808a4a}"
+ - "queue=${WINDOWS_BUILDER_QUEUE:-v4-20-07-30-165418-bk13785-82b83865-d}"
- "scaler_version=2"
- "minimum_instances=1"
- "agent_count=1"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3e45a29d49..75b5da371d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@
- This no longer supports AuthorityImminentLoss.
- ComponentUpdateSystem no longer has the API `GetAuthority`, `GetComponent`, and `HasComponent`. [#1364](https://github.com/spatialos/gdk-for-unity/pull/1364)
- Use the Unity Entities `EntityManager` instead.
+- The GDK now depends on .NET Core v3.1.3xx instead of v2.2.2xx. [#1443](https://github.com/spatialos/gdk-for-unity/pull/1443)
### Added
diff --git a/UPGRADE_GUIDE.md b/UPGRADE_GUIDE.md
index 3290911304..49bf1d03da 100644
--- a/UPGRADE_GUIDE.md
+++ b/UPGRADE_GUIDE.md
@@ -17,6 +17,12 @@ The `WorkerSystem` and `ComponentDatabase` can be used to convert from `entityId
The `Reader` and `Writer` classes have had their `public Authority Authority` property changed to `public bool HasAuthority`. `HasAuthority` now indicates whether you have authority over the given component or not.
+### .NET Core Update
+
+The GDK, in particular the code generator and deployment launcher, has been updated to use [.NET Core SDK v3.1.3xx](https://dotnet.microsoft.com/download/dotnet-core/3.1).
+
+To update, download and install the new version from the link provided above.
+
## From `0.3.7` to `0.3.8`
### Asset based entity representation
diff --git a/ci/shared-ci.pinned b/ci/shared-ci.pinned
index 92c9e6cae5..43d1212f7b 100644
--- a/ci/shared-ci.pinned
+++ b/ci/shared-ci.pinned
@@ -1 +1 @@
-master e23a8b76403a62d8029ec4bc249e98e759592670
+master 90c5ca1814e6bd0b7cbcbae37f4b80d9ba83fc03
diff --git a/ci/sonar-scanner.sh b/ci/sonar-scanner.sh
index 02a12e5dfc..5f7431053c 100755
--- a/ci/sonar-scanner.sh
+++ b/ci/sonar-scanner.sh
@@ -60,12 +60,14 @@ fi
#
# To enable this to work with Unity, we first need to generate the `.sln` and `.csproj` files in order to build them with `msbuild`
# For ease of use, we execute msbuild through `dotnet`!
+
pushd "workers/unity"
# This finds all .xml files in the logs/ directory and concatentates their relative path together, separated by comma:
# E.g. - -d:sonar.cs.opencover.reportsPath=./logs/coverage-results/my-first-report.xml,./logs/coverage-results/my-second-report.xml
# Wildcards don't appear to play nice with this.
args+=("-d:sonar.cs.opencover.reportsPaths=$(find ./logs -name "*.xml" | paste -sd "," -)")
-
+ trap "rm -f ${PROJECT_DIR}/workers/unity/global.json" EXIT
+ dotnet new globaljson --sdk-version 2.2.402 --force
traceStart "Execute sonar-scanner :sonarqube:"
dotnet-sonarscanner begin "${args[@]}"
dotnet msbuild ./unity.sln -t:Rebuild -nr:false | tee "${PROJECT_DIR}/logs/sonar-msbuild.log"
diff --git a/ci/test.sh b/ci/test.sh
index 9dd34b3caf..9c48bda584 100755
--- a/ci/test.sh
+++ b/ci/test.sh
@@ -83,6 +83,8 @@ traceStart "Testing Unity: Playmode :joystick:"
popd
traceEnd
-ci/sonar-scanner.sh
+if ! isMacOS; then
+ ci/sonar-scanner.sh
+fi
cleanUnity "$(pwd)/workers/unity"
diff --git a/workers/unity/Packages/io.improbable.gdk.deploymentlauncher/.DeploymentLauncher/DeploymentLauncher.csproj b/workers/unity/Packages/io.improbable.gdk.deploymentlauncher/.DeploymentLauncher/DeploymentLauncher.csproj
index 0db6e76c79..cc7be87103 100644
--- a/workers/unity/Packages/io.improbable.gdk.deploymentlauncher/.DeploymentLauncher/DeploymentLauncher.csproj
+++ b/workers/unity/Packages/io.improbable.gdk.deploymentlauncher/.DeploymentLauncher/DeploymentLauncher.csproj
@@ -2,8 +2,8 @@
Exe
- netcoreapp2.1
- 7.3
+ netcoreapp3.1
+ 8.0
diff --git a/workers/unity/Packages/io.improbable.gdk.testutils/.SpotShim/SpotShim/SpotShim/SpotShim.csproj b/workers/unity/Packages/io.improbable.gdk.testutils/.SpotShim/SpotShim/SpotShim/SpotShim.csproj
index 59c27ac94f..c8d3a166a4 100644
--- a/workers/unity/Packages/io.improbable.gdk.testutils/.SpotShim/SpotShim/SpotShim/SpotShim.csproj
+++ b/workers/unity/Packages/io.improbable.gdk.testutils/.SpotShim/SpotShim/SpotShim/SpotShim.csproj
@@ -2,8 +2,8 @@
Exe
- netcoreapp2.1
- 7.1
+ netcoreapp3.1
+ 8.0
diff --git a/workers/unity/Packages/io.improbable.gdk.tools/.CodeGenTemplate/CodeGen/CodeGen.csproj b/workers/unity/Packages/io.improbable.gdk.tools/.CodeGenTemplate/CodeGen/CodeGen.csproj
index c54ca795c3..aaa9aaa941 100644
--- a/workers/unity/Packages/io.improbable.gdk.tools/.CodeGenTemplate/CodeGen/CodeGen.csproj
+++ b/workers/unity/Packages/io.improbable.gdk.tools/.CodeGenTemplate/CodeGen/CodeGen.csproj
@@ -1,7 +1,8 @@
Exe
- netcoreapp2.1
+ netcoreapp3.1
+ 8.0
Improbable.Gdk.CodeGenerator.CodeGenerator
diff --git a/workers/unity/Packages/io.improbable.gdk.tools/.CodeGenTemplate/CodeGenerationLib/CodeGenerationLib.csproj b/workers/unity/Packages/io.improbable.gdk.tools/.CodeGenTemplate/CodeGenerationLib/CodeGenerationLib.csproj
index 439462e7d7..aa973bc564 100644
--- a/workers/unity/Packages/io.improbable.gdk.tools/.CodeGenTemplate/CodeGenerationLib/CodeGenerationLib.csproj
+++ b/workers/unity/Packages/io.improbable.gdk.tools/.CodeGenTemplate/CodeGenerationLib/CodeGenerationLib.csproj
@@ -1,8 +1,9 @@
- netcoreapp2.1
+ netcoreapp3.1
CodeGenerationLib
+ 8.0