diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1d38a6f26b..c53c87c742 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,7 +3,12 @@
- Diagnostics related feature requests and improvements [#5951](https://github.com/dotnet/vscode-csharp/issues/5951)
- Debug from .csproj and .sln [#5876](https://github.com/dotnet/vscode-csharp/issues/5876)
-# 2.104.x
+# 2.111.x
+* Update extension to run on .NET 10 (PR: [#8839](https://github.com/dotnet/vscode-csharp/pull/8839))
+* Update Roslyn to 5.3.0-2.25604.5 (PR: [#8839](https://github.com/dotnet/vscode-csharp/pull/))
+ * Build our libraries against net10.0 (PR: [#81545](https://github.com/dotnet/roslyn/pull/81545))
+ * Update Roslyn LSP server to .net10 (PR: [#81508](https://github.com/dotnet/roslyn/pull/81508))
+ * Fix InvalidCastException in ConvertForToForEach with tuples (PR: [#81531](https://github.com/dotnet/roslyn/pull/81531))
# 2.103.x
* include roslyn event source configs in profiling command (PR: [#8808](https://github.com/dotnet/vscode-csharp/pull/8808))
diff --git a/Directory.Build.props b/Directory.Build.props
index 3720f4d06a..d5fcd2bdc8 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -5,6 +5,6 @@
Defines the lowest supported target framework for the extension.
Used by server download / integration tests to ensure they run when only this SDK is installed.
-->
- net6.0
+ net8.0
-
\ No newline at end of file
+
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 3063669d44..62f00b16cf 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -119,7 +119,7 @@ stages:
pool:
name: NetCore-Public
demands: ImageOverride -equals build.ubuntu.2204.amd64.open
- containerName: mcr.microsoft.com/dotnet/sdk:10.0.100-rc.2-noble
+ containerName: mcr.microsoft.com/dotnet/sdk:10.0-noble
- stage: Test_Windows_Stage
displayName: Test Windows
diff --git a/package.json b/package.json
index a7b707a445..8a5a0831b1 100644
--- a/package.json
+++ b/package.json
@@ -40,7 +40,7 @@
"workspace"
],
"defaults": {
- "roslyn": "5.3.0-2.25603.1",
+ "roslyn": "5.3.0-2.25604.5",
"omniSharp": "1.39.14",
"razor": "10.0.0-preview.25577.1",
"razorOmnisharp": "7.0.0-preview.23363.1",
diff --git a/src/lsptoolshost/dotnetRuntime/dotnetRuntimeExtensionResolver.ts b/src/lsptoolshost/dotnetRuntime/dotnetRuntimeExtensionResolver.ts
index d8dddd17f0..3a04514920 100644
--- a/src/lsptoolshost/dotnetRuntime/dotnetRuntimeExtensionResolver.ts
+++ b/src/lsptoolshost/dotnetRuntime/dotnetRuntimeExtensionResolver.ts
@@ -21,9 +21,9 @@ import {
import { DotNetRuntimeExtensionId } from '../../checkDotNetRuntimeExtensionVersion';
import { getCSharpDevKit } from '../../utils/getCSharpDevKit';
-const DotNetMajorVersion = '9';
+const DotNetMajorVersion = '10';
const DotNetMinorVersion = '0';
-const DotNetPatchVersion = '1';
+const DotNetPatchVersion = '0';
export const DotNetRuntimeVersion = `${DotNetMajorVersion}.${DotNetMinorVersion}.${DotNetPatchVersion}`;
/**
diff --git a/test/lsptoolshost/integrationTests/sourceGenerator.integration.test.ts b/test/lsptoolshost/integrationTests/sourceGenerator.integration.test.ts
index bf21c36726..3acd32e37e 100644
--- a/test/lsptoolshost/integrationTests/sourceGenerator.integration.test.ts
+++ b/test/lsptoolshost/integrationTests/sourceGenerator.integration.test.ts
@@ -50,11 +50,11 @@ describe(`Source Generator Tests`, () => {
requestPosition
)
);
- expect(referencesList.length).toEqual(8);
+ expect(referencesList.length).toEqual(5);
const referencesInGeneratedFiles = sortLocations(
referencesList.filter((r) => r.uri.scheme === 'roslyn-source-generated')
);
- expect(referencesInGeneratedFiles.length).toEqual(7);
+ expect(referencesInGeneratedFiles.length).toEqual(4);
const firstPath = referencesInGeneratedFiles[0].uri.path;
expect(firstPath).toEqual('/SourceGenerationContext.g.cs');