Repository: OmniSharp/omnisharp-vscode
Pull request #5219 (2022-05-20 05:03:25)

Update OmniSharp 1.39.0
* Updates OmniSharp
* Adds Alpine x64 & arm64 packages
* Adds SDK Path, Version, and IncludePrereleases options (.NET 7 preview support)


Patch:
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 648c9215..3809b1a3 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -9,7 +9,6 @@
             "args": [
                 "--extensionDevelopmentPath=${workspaceRoot}"
             ],
-            "stopOnEntry": false,
             "sourceMaps": true,
             "outFiles": [
                 "${workspaceRoot}/dist/*.js"
@@ -52,7 +51,6 @@
                 "CODE_EXTENSIONS_PATH": "${workspaceRoot}",
                 "OSVC_SUITE": "featureTests"
             },
-            "stopOnEntry": false,
             "sourceMaps": true,
             "outFiles": [
                 "${workspaceRoot}/out/test/**/*.js"
@@ -77,7 +75,6 @@
                 "CODE_EXTENSIONS_PATH": "${workspaceRoot}",
                 "OSVC_SUITE": "singleCsproj"
             },
-            "stopOnEntry": false,
             "sourceMaps": true,
             "outFiles": [
                 "${workspaceRoot}/dist/*.js"
@@ -121,7 +118,6 @@
                 "CODE_EXTENSIONS_PATH": "${workspaceRoot}",
                 "OSVC_SUITE": "slnWithCsproj"
             },
-            "stopOnEntry": false,
             "sourceMaps": true,
             "outFiles": [
                 "${workspaceRoot}/dist/*.js"
@@ -146,7 +142,6 @@
                 "CODE_EXTENSIONS_PATH": "${workspaceRoot}",
                 "OSVC_SUITE": "slnFilterWithCsproj"
             },
-            "stopOnEntry": false,
             "sourceMaps": true,
             "outFiles": [
                 "${workspaceRoot}/dist/*.js"
@@ -171,7 +166,6 @@
                 "CODE_EXTENSIONS_PATH": "${workspaceRoot}",
                 "OSVC_SUITE": "slnWithGenerator"
             },
-            "stopOnEntry": false,
             "sourceMaps": true,
             "outFiles": [
                 "${workspaceRoot}/dist/*.js"
@@ -188,8 +182,8 @@
                 "updatePackageDependencies"
             ],
             "env": {
-                "NEW_DEPS_URLS": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-x64-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-x86-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-arm64-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-osx-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-x64-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-x86-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-arm64-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-x64-net6.0-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-arm64-net6.0-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-osx-x64-net6.0-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-osx-arm64-net6.0-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-x64-net6.0-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-x86-net6.0-1.38.2.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-arm64-net6.0-1.38.2.zip",
-                "NEW_DEPS_VERSION": "1.38.2"
+                "NEW_DEPS_URLS": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-x64-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-x86-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-arm64-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-osx-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-x64-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-x86-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-arm64-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-musl-x64-net6.0-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-musl-arm64-net6.0-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-x64-net6.0-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-arm64-net6.0-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-osx-x64-net6.0-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-osx-arm64-net6.0-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-x64-net6.0-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-x86-net6.0-1.39.0.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-arm64-net6.0-1.39.0.zip",
+                "NEW_DEPS_VERSION": "1.39.0"
             },
             "cwd": "${workspaceFolder}"
         }
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 58589883..ae606aa9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
-## Known Issues in 1.24.4
+## Known Issues in 1.25.0
 
-* For Mono-based development (e.g. Unity) that requires full .NET framework, you need to set `"omnisharp.useGlobalMono": "always"`. The current value of "auto" will remain "never" until Mono [upgrades their bundled MSBuild version](https://github.com/mono/mono/issues/20250).
+* For Mono-based development (e.g. Unity) that requires full .NET framework, you need to set `"omnisharp.useModernNet": false`.
 * After selecting a solution filter (*.slnf) from the project selector, the solution's name will be displayed in the status bar instead of the filter's.
 * Known limitations with the preview Razor (cshtml) language service to be addressed in a future release:
   * Not all platforms ship with the Razor LSP, such as Linux arm64.
@@ -12,7 +12,35 @@
 * Renaming symbol fails within a file that had recently been renamed without saving changes.
   * As a workaround, make an edit within the file before using Rename Symbol.
 
-## 1.24.4
+## 1.25.0
+* Make SDK build of OmniSharp the default ([#5120](https://github.com/OmniSharp/omnisharp-vscode/issues/5120), PR: [#5176](https://github.com/OmniSharp/omnisharp-vscode/pull/5176))
+* Add auto complete name to class, interface, enum, struct etc. snippets (PR: [#5198](https://github.com/OmniSharp/omnisharp-vscode/pull/5198))
+* Add a fallback for ps in remoteProcessPickerScript ([#4096](https://github.com/OmniSharp/omnisharp-vscode/issues/4096), PR: [#5207](https://github.com/OmniSharp/omnisharp-vscode/pull/5207))
+* Clear nullability warnings in server/omnisharp.ts (PR: [#5199](https://github.com/OmniSharp/omnisharp-vscode/pull/5199))
+* Fix nullability for autoStart preferredPath (PR: [#5192](https://github.com/OmniSharp/omnisharp-vscode/pull/5192))
+* coreclr debug configuration should support input variables for envFile ([#5102](https://github.com/OmniSharp/omnisharp-vscode/issues/5102), PR: [#5189](https://github.com/OmniSharp/omnisharp-vscode/pull/5189))
+* Fix small spelling mistake (PR: [#5215](https://github.com/OmniSharp/omnisharp-vscode/pull/5215))
+* Low-hanging nullable fruit (PR: [#5186](https://github.com/OmniSharp/omnisharp-vscode/pull/5186))
+* Fix .net6 OmniSharp acquisition on Linux arm64 (PR: [#5172](https://github.com/OmniSharp/omnisharp-vscode/pull/5172))
+* Remove project.json reference in debugger.md (PR: [#5210](https://github.com/OmniSharp/omnisharp-vscode/pull/5210))
+* Update debugger to 1.24.5 (PR: [#5211](https://github.com/OmniSharp/omnisharp-vscode/pull/5211))
+  * Fixes [#5083](https://github.com/OmniSharp/omnisharp-vscode/issues/5083)
+* Update OmniSharp to 1.39.0 (PR: [#5219](https://github.com/OmniSharp/omnisharp-vscode/pull/5219))
+  * Update Roslyn to 4.3.0-2.22267.5 (PR: [omnisharp-roslyn#2401](https://github.com/OmniSharp/omnisharp-roslyn/pull/2401))
+  * Fixed run script for Mono ([#5181](https://github.com/OmniSharp/omnisharp-vscode/issues/5181), [#5179](https://github.com/OmniSharp/omnisharp-vscode/issues/5179), PR: [omnisharp-roslyn##2398](https://github.com/OmniSharp/omnisharp-roslyn/pull/2398))
+  * Fall back to /usr/lib/os-release if /etc/os-release doesn't exist (PR: [omnisharp-roslyn##2380](https://github.com/OmniSharp/omnisharp-roslyn/pull/2380))
+  * Added support for linux-musl-x64 and linux-musl-arm64 ([omnisharp-roslyn##2366](https://github.com/OmniSharp/omnisharp-roslyn/issues/2366), PR: [omnisharp-roslyn##2395](https://github.com/OmniSharp/omnisharp-roslyn/pull/2395))
+  * Enable GoToDefinition for symbols in metadata documents ([#4818](https://github.com/OmniSharp/omnisharp-vscode/issues/4818), PR: [omnisharp-roslyn##2390](https://github.com/OmniSharp/omnisharp-roslyn/pull/2390))
+  * Use human readable doc in lsp's signature help ([omnisharp-roslyn##2372](https://github.com/OmniSharp/omnisharp-roslyn/issues/2372), PR: [omnisharp-roslyn##2392](https://github.com/OmniSharp/omnisharp-roslyn/pull/2392))
+  * Add TextEdits support to InlayHints (PR: [omnisharp-roslyn##2385](https://github.com/OmniSharp/omnisharp-roslyn/pull/2385))
+  * Fix Equals of AutoCompleteResponse and simplify some code (PR: [omnisharp-roslyn##2362](https://github.com/OmniSharp/omnisharp-roslyn/pull/2362))
+  * Support O# running on .NET 7 SDKs (PR: [omnisharp-roslyn##2377](https://github.com/OmniSharp/omnisharp-roslyn/pull/2377))
+  * Provide constructor accepting hostServices (PR: [omnisharp-roslyn##2373](https://github.com/OmniSharp/omnisharp-roslyn/pull/2373))
+  * Typo fix ([omnisharp-roslyn##2374](https://github.com/OmniSharp/omnisharp-roslyn/pull/2374))
+  * Update to latest .NET SDKs (PR: [omnisharp-roslyn##2378](https://github.com/OmniSharp/omnisharp-roslyn/pull/2378))
+  * Remove MSBuild and Mono from release packages ([omnisharp-roslyn##2339](https://github.com/OmniSharp/omnisharp-roslyn/issues/2339), PR: [omnisharp-roslyn##2360](https://github.com/OmniSharp/omnisharp-roslyn/pull/2360))
+
+## 1.24.4 (Apr 11th, 2022)
 * Remove inlayHints from diff view (PR: [#5151](https://github.com/OmniSharp/omnisharp-vscode/pull/5151))
 * Quote arguments containing spaces when launching OmniSharp ([#5150](https://github.com/OmniSharp/omnisharp-vscode/issues/5150), PR: [#5154](https://github.com/OmniSharp/omnisharp-vscode/pull/5154))
 
diff --git a/README.md b/README.md
index 40f00ce6..339406ee 100644
--- a/README.md
+++ b/README.md
@@ -16,45 +16,41 @@ The C# extension is powered by [OmniSharp](https://github.com/OmniSharp/omnishar
 
 ## Announcements
 
-### Planned removal of the included Mono & MSBuild Tools
+### The C# extension no longer ships with an included Mono & MSBuild Tools
 
-In the future .NET Framework builds of OmniSharp will not ship with Mono or the MSBuild tooling (See announcement [omnisharp-roslyn#2339](https://github.com/OmniSharp/omnisharp-roslyn/issues/2339)). To ensure that the C# extension remains usable out of the box for .NET SDK projects, we will be changing the default value of `omnisharp.useModernNet` to `true`.
+.NET Framework builds of OmniSharp no longer ship with Mono or the MSBuild tooling (See announcement [omnisharp-roslyn#2339](https://github.com/OmniSharp/omnisharp-roslyn/issues/2339)). To ensure that the C# extension remains usable out of the box for .NET SDK projects, we have changed the default value of `omnisharp.useModernNet` to `true`.
 
-See issue [#5120](https://github.com/OmniSharp/omnisharp-vscode/issues/5120) for more details.
-
-### Using .NET 6 builds of OmniSharp
-
-Starting with C# extension version 1.24.0, there is now an option to use build of OmniSharp that runs on the .NET 6 SDK. This build requires that the .NET 6 SDK be installed and does not use Visual Studio MSBuild tools or Mono. It only supports newer SDK-style projects that are buildable with `dotnet build`. Unity projects and other Full Framework projects are not supported.
-
-To use the .NET 6 build, set `omnisharp.useModernNet` to `true` in your VS Code settings and restart OmniSharp.
-
-### Note about using .NET Core 3.1.4xx SDKs
-
-The .NET 3.1.4xx SDKs require version 16.7 of MSBuild.
-
-For MacOS and Linux users who have Mono installed, this means you will need to set `omnisharp.useGlobalMono` to `never` until a version of Mono ships with MSBuild 16.7.
-
-You can also use the .NET 6 build of OmniSharp which runs on the .NET 6 SDK. See instructions above.
-
-### Note about using .NET 5 SDKs
-
-The .NET 5 SDK requires version 16.8 of MSBuild.
-
-For Windows users who have Visual Studio installed, this means you will need to be on the latest Visual Studio 16.8 Preview.
+If you still need Unity or .NET Framework support, you can set `omnisharp.useModernNet` to `false` in your VS Code settings and restart OmniSharp.
 
-For MacOS and Linux users who have Mono installed, this means you will need to set `omnisharp.useGlobalMono` to `never` until a version of Mono ships with MSBuild 16.8.
-
-You can also use the .NET 6 build of OmniSharp which runs on the .NET 6 SDK. See instructions above.
-
-### Note about using .NET 6 SDKs
-
-The .NET 6 SDK requires version 16.10 of MSBuild.
-
-For Windows users who have Visual Studio installed, this means you will need to have Visual Studio 16.11 or newer installed.
-
-For MacOS and Linux users who have Mono installed, this means you will need to set `omnisharp.useGlobalMono` to `never` until a version of Mono ships with MSBuild 16.10.
+See issue [#5120](https://github.com/OmniSharp/omnisharp-vscode/issues/5120) for more details.
 
-You can also use the .NET 6 build of OmniSharp which runs on the .NET 6 SDK. See instructions above.
+## What's new in 1.25.0
+* Make SDK build of OmniSharp the default ([#5120](https://github.com/OmniSharp/omnisharp-vscode/issues/5120), PR: [#5176](https://github.com/OmniSharp/omnisharp-vscode/pull/5176))
+* Add auto complete name to class, interface, enum, struct etc. snippets (PR: [#5198](https://github.com/OmniSharp/omnisharp-vscode/pull/5198))
+* Add a fallback for ps in remoteProcessPickerScript ([#4096](https://github.com/OmniSharp/omnisharp-vscode/issues/4096), PR: [#5207](https://github.com/OmniSharp/omnisharp-vscode/pull/5207))
+* Clear nullability warnings in server/omnisharp.ts (PR: [#5199](https://github.com/OmniSharp/omnisharp-vscode/pull/5199))
+* Fix nullability for autoStart preferredPath (PR: [#5192](https://github.com/OmniSharp/omnisharp-vscode/pull/5192))
+* coreclr debug configuration should support input variables for envFile ([#5102](https://github.com/OmniSharp/omnisharp-vscode/issues/5102), PR: [#5189](https://github.com/OmniSharp/omnisharp-vscode/pull/5189))
+* Fix small spelling mistake (PR: [#5215](https://github.com/OmniSharp/omnisharp-vscode/pull/5215))
+* Low-hanging nullable fruit (PR: [#5186](https://github.com/OmniSharp/omnisharp-vscode/pull/5186))
+* Fix .net6 OmniSharp acquisition on Linux arm64 (PR: [#5172](https://github.com/OmniSharp/omnisharp-vscode/pull/5172))
+* Remove project.json reference in debugger.md (PR: [#5210](https://github.com/OmniSharp/omnisharp-vscode/pull/5210))
+* Update debugger to 1.24.5 (PR: [#5211](https://github.com/OmniSharp/omnisharp-vscode/pull/5211))
+  * Fixes [#5083](https://github.com/OmniSharp/omnisharp-vscode/issues/5083)
+* Update OmniSharp to 1.39.0 (PR: [#5219](https://github.com/OmniSharp/omnisharp-vscode/pull/5219))
+  * Update Roslyn to 4.3.0-2.22267.5 (PR: [omnisharp-roslyn#2401](https://github.com/OmniSharp/omnisharp-roslyn/pull/2401))
+  * Fixed run script for Mono ([#5181](https://github.com/OmniSharp/omnisharp-vscode/issues/5181), [#5179](https://github.com/OmniSharp/omnisharp-vscode/issues/5179), PR: [omnisharp-roslyn##2398](https://github.com/OmniSharp/omnisharp-roslyn/pull/2398))
+  * Fall back to /usr/lib/os-release if /etc/os-release doesn't exist (PR: [omnisharp-roslyn##2380](https://github.com/OmniSharp/omnisharp-roslyn/pull/2380))
+  * Added support for linux-musl-x64 and linux-musl-arm64 ([omnisharp-roslyn##2366](https://github.com/OmniSharp/omnisharp-roslyn/issues/2366), PR: [omnisharp-roslyn##2395](https://github.com/OmniSharp/omnisharp-roslyn/pull/2395))
+  * Enable GoToDefinition for symbols in metadata documents ([#4818](https://github.com/OmniSharp/omnisharp-vscode/issues/4818), PR: [omnisharp-roslyn##2390](https://github.com/OmniSharp/omnisharp-roslyn/pull/2390))
+  * Use human readable doc in lsp's signature help ([omnisharp-roslyn##2372](https://github.com/OmniSharp/omnisharp-roslyn/issues/2372), PR: [omnisharp-roslyn##2392](https://github.com/OmniSharp/omnisharp-roslyn/pull/2392))
+  * Add TextEdits support to InlayHints (PR: [omnisharp-roslyn##2385](https://github.com/OmniSharp/omnisharp-roslyn/pull/2385))
+  * Fix Equals of AutoCompleteResponse and simplify some code (PR: [omnisharp-roslyn##2362](https://github.com/OmniSharp/omnisharp-roslyn/pull/2362))
+  * Support O# running on .NET 7 SDKs (PR: [omnisharp-roslyn##2377](https://github.com/OmniSharp/omnisharp-roslyn/pull/2377))
+  * Provide constructor accepting hostServices (PR: [omnisharp-roslyn##2373](https://github.com/OmniSharp/omnisharp-roslyn/pull/2373))
+  * Typo fix ([omnisharp-roslyn##2374](https://github.com/OmniSharp/omnisharp-roslyn/pull/2374))
+  * Update to latest .NET SDKs (PR: [omnisharp-roslyn##2378](https://github.com/OmniSharp/omnisharp-roslyn/pull/2378))
+  * Remove MSBuild and Mono from release packages ([omnisharp-roslyn##2339](https://github.com/OmniSharp/omnisharp-roslyn/issues/2339), PR: [omnisharp-roslyn##2360](https://github.com/OmniSharp/omnisharp-roslyn/pull/2360))
 
 ## What's new in 1.24.4
 * Remove inlayHints from diff view (PR: [#5151](https://github.com/OmniSharp/omnisharp-vscode/pull/5151))
@@ -82,22 +78,6 @@ You can also use the .NET 6 build of OmniSharp which runs on the .NET 6 SDK. See
     * Support inlay hints (PR: [omnisharp-roslyn#2357](https://github.com/OmniSharp/omnisharp-roslyn/pull/2357))
     * Update build tools to match .NET SDK 6.0.201 ([omnisharp-roslyn#2363](https://github.com/OmniSharp/omnisharp-roslyn/pull/2363))
 
-## What's new in 1.24.1
-* Only semantically highlight documents from uri.scheme 'file' (PR: [#5059](https://github.com/OmniSharp/omnisharp-vscode/pull/5059))
-* Filter packages to install by framework before attempting install ([#5032](https://github.com/OmniSharp/omnisharp-vscode/issues/5032), PR: [#5041](https://github.com/OmniSharp/omnisharp-vscode/pull/5041))
-* Update Razor's TextMate to latest. (PR: [#5012](https://github.com/OmniSharp/omnisharp-vscode/pull/5012))
-* Upgrade OmniSharp to 1.38.1:
-  * Reuse Roslyn's analyzer assembly loader (PR: [omnisharp-roslyn#2236](https://github.com/OmniSharp/omnisharp-roslyn/pull/2236))
-  * Pass Completion, Rename and Block Structure options directly instead of updating the Workspace (PR: [omnisharp-roslyn#2306](https://github.com/OmniSharp/omnisharp-roslyn/pull/2306))
-  * Update included build tool to match the current 6.0.200 sdk (PR: [omnisharp-roslyn#2329](https://github.com/OmniSharp/omnisharp-roslyn/pull/2329))
-  * Fix concurrency issue in CSharpDiagnosticWorker (PR: [omnisharp-roslyn#2333](https://github.com/OmniSharp/omnisharp-roslyn/pull/2333))
-  * run analyzers on multiple threads if allowed to (PR: [omnisharp-roslyn#2285](https://github.com/OmniSharp/omnisharp-roslyn/pull/2285))
-  * Add MSBuild project to solution and apply the change to Roslyn workspace as a unit (PR: [omnisharp-roslyn#2314](https://github.com/OmniSharp/omnisharp-roslyn/pull/2314))
-  * Updated to Roslyn 4.0.1 (PR: [omnisharp-roslyn#2323](https://github.com/OmniSharp/omnisharp-roslyn/pull/2323))
-  * Enable OmniSharp.Cake tests for .NET 6 (PR: [omnisharp-roslyn#2307](https://github.com/OmniSharp/omnisharp-roslyn/pull/2307))
-  * Handle completions with trailing whitespace on previous lines (PR: [omnisharp-roslyn#2319](https://github.com/OmniSharp/omnisharp-roslyn/pull/2319))
-  * Update build bools to match .NET SDK 6.0.200 (PR: [omnisharp-roslyn#2347](https://github.com/OmniSharp/omnisharp-roslyn/pull/2347))
-
 ### Emmet support in Razor files
 
 To enable emmet support, add the following to your settings.json:
@@ -108,12 +88,6 @@ To enable emmet support, add the following to your settings.json:
 }
 ```
 
-### Semantic Highlighting
-
-The C# semantic highlighting support is in preview. To enable, set `editor.semanticHighlighting.enabled` and `csharp.semanticHighlighting.enabled` to `true` in your settings. Semantic highlighting is only provided for code files that are part of the active project.
-
-To really see the difference, try the new Visual Studio 2019 Light and Dark themes with semantic colors that closely match Visual Studio 2019.
-
 ### Supported Operating Systems for Debugging
 
 Currently, the C# debugger officially supports the following operating systems:
@@ -141,7 +115,7 @@ First install:
 
 To **run and develop** do the following:
 
-* Run `npm i`
+* Run `npm ci`
 * Run `npm run compile`
 * Open in Visual Studio Code (`code .`)
 * _Optional:_ run `npm run watch`, make code changes
diff --git a/package-lock.json b/package-lock.json
index 2c708ca9..c86a0069 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "csharp",
-  "version": "1.24.5",
+  "version": "1.25.0",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
diff --git a/package.json b/package.json
index 3629f0c2..7d90922d 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "csharp",
   "publisher": "ms-dotnettools",
-  "version": "1.24.5",
+  "version": "1.25.0",
   "description": "C# for Visual Studio Code (powered by OmniSharp).",
   "displayName": "C#",
   "author": "Microsoft Corporation",
@@ -35,7 +35,7 @@
     }
   },
   "defaults": {
-    "omniSharp": "1.38.2",
+    "omniSharp": "1.39.0",
     "razor": "6.0.0-preview.5.21358.6"
   },
   "main": "./dist/extension",
@@ -129,104 +129,104 @@
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Windows (.NET 4.7.2 / x86)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-x86-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-x86-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0",
       "platforms": [
         "win32"
       ],
       "architectures": [
         "x86"
       ],
-      "installTestPath": "./.omnisharp/1.38.2/OmniSharp.exe",
+      "installTestPath": "./.omnisharp/1.39.0/OmniSharp.exe",
       "platformId": "win-x86",
       "isFramework": true,
-      "integrity": "B2E414B2A7155B2A484DB182B69223B0AEF9EB1F8E1CB6155C6C5E9D07A78CF8"
+      "integrity": "11B6D742CAFC416F204338926CA59812BA8A7F24B1AF50D366A91502A8898CFE"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Windows (.NET 6 / x86)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-x86-net6.0-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2-net6.0",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-x86-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
       "platforms": [
         "win32"
       ],
       "architectures": [
         "x86"
       ],
-      "installTestPath": "./.omnisharp/1.38.2-net6.0/OmniSharp.dll",
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
       "platformId": "win-x86",
       "isFramework": false,
-      "integrity": "EAA8D28669049E68E458CC7224C2B9069F575CEA51B8B36D4F4D51C7532D0419"
+      "integrity": "46175E9DFE469875883FFD9B592833AB953E5C57737FCFA0867F24C8FE08CC7A"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Windows (.NET 4.7.2 / x64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-x64-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-x64-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0",
       "platforms": [
         "win32"
       ],
       "architectures": [
         "x86_64"
       ],
-      "installTestPath": "./.omnisharp/1.38.2/OmniSharp.exe",
+      "installTestPath": "./.omnisharp/1.39.0/OmniSharp.exe",
       "platformId": "win-x64",
       "isFramework": true,
-      "integrity": "1F94980CA0FAB7B6AE17195FBB9FC0A677EA4BB96A376CF68B32A0D59650522D"
+      "integrity": "28B7D3B88CA2FA8AEB90F7277CC32BFBEF4085B28F78CC6FB441BBAB4401F0D5"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Windows (.NET 6 / x64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-x64-net6.0-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2-net6.0",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-x64-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
       "platforms": [
         "win32"
       ],
       "architectures": [
         "x86_64"
       ],
-      "installTestPath": "./.omnisharp/1.38.2-net6.0/OmniSharp.dll",
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
       "platformId": "win-x64",
       "isFramework": false,
-      "integrity": "88B82CC9D7D1E8757F3DE457833FE29BACCEA35EE16C8790513BF0129316ECC4"
+      "integrity": "6ADDC11D92937F2300B83B7C880BC9EB474AEB8AAE21D95D06D6E4C103E99277"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Windows (.NET 4.7.2 / arm64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-arm64-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-arm64-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0",
       "platforms": [
         "win32"
       ],
       "architectures": [
         "arm64"
       ],
-      "installTestPath": "./.omnisharp/1.38.2/OmniSharp.exe",
+      "installTestPath": "./.omnisharp/1.39.0/OmniSharp.exe",
       "platformId": "win-arm64",
       "isFramework": true,
-      "integrity": "ECA2B07CBAEACF1D1E755ECCAF57459F0DD36A30C176251D18146440A0852E9B"
+      "integrity": "030D645DC7E53369D096A49969BB693C3CE16AD79ECD9CC38BBA322341302719"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Windows (.NET 6 / arm64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-win-arm64-net6.0-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2-net6.0",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-win-arm64-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
       "platforms": [
         "win32"
       ],
       "architectures": [
         "arm64"
       ],
-      "installTestPath": "./.omnisharp/1.38.2-net6.0/OmniSharp.dll",
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
       "platformId": "win-arm64",
       "isFramework": false,
-      "integrity": "ACAEA0B0EDD5ABDC23196AC7C4C928005C6FF97D829CA96515842C87C30C27AE"
+      "integrity": "78AF6CEA4DA8E515F06720A79F216BAC39F9E12E3BD511A8DA27C82CB08E305D"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for OSX (Mono / x64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-osx-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-osx-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0",
       "platforms": [
         "darwin"
       ],
@@ -234,48 +234,48 @@
         "./mono.osx",
         "./run"
       ],
-      "installTestPath": "./.omnisharp/1.38.2/run",
+      "installTestPath": "./.omnisharp/1.39.0/run",
       "platformId": "osx",
       "isFramework": true,
-      "integrity": "9C934684359FC1488803075B549D9B57F8E41129B61C344DA7CF202C4918FEB6"
+      "integrity": "F22124FB0A150979DA121C03B404CC5D97C20ADABBFA1B40B1E2004CA09B0562"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for OSX (.NET 6 / x64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-osx-x64-net6.0-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2-net6.0",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-osx-x64-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
       "platforms": [
         "darwin"
       ],
       "architectures": [
         "x86_64"
       ],
-      "installTestPath": "./.omnisharp/1.38.2-net6.0/OmniSharp.dll",
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
       "platformId": "osx-x64",
       "isFramework": false,
-      "integrity": "F32B94A4601E532C7380AEBE9498B20793EDC538671BFF516C2EED4CBAE84DAF"
+      "integrity": "1B291E632FE007BF746AD595549A692917A36DC22FB2031810E1898AB05A843D"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for OSX (.NET 6 / arm64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-osx-arm64-net6.0-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2-net6.0",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-osx-arm64-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
       "platforms": [
         "darwin"
       ],
       "architectures": [
         "arm64"
       ],
-      "installTestPath": "./.omnisharp/1.38.2-net6.0/OmniSharp.dll",
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
       "platformId": "osx-arm64",
       "isFramework": false,
-      "integrity": "58BA4910DFE978B5D873BAA062123C0FEDEB2E89A685F22825355C54E9BF7D90"
+      "integrity": "D31EF1985BE2B98D54B4AAD918DAEA64EE8E1847E9D49375BFCAA2F9F3AFDC56"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Linux (Mono / x86)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-x86-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-x86-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0",
       "platforms": [
         "linux"
       ],
@@ -287,16 +287,16 @@
         "./mono.linux-x86",
         "./run"
       ],
-      "installTestPath": "./.omnisharp/1.38.2/run",
+      "installTestPath": "./.omnisharp/1.39.0/run",
       "platformId": "linux-x86",
       "isFramework": true,
-      "integrity": "3F230B3C6DB0D48B5E4D51C45BB52F6B568AD1CC8CEEA7D50128123C17A77CD1"
+      "integrity": "1A5CDA93CE5ECDE29B3CCF66EC78C1046993FD2D7EA4C445BB57377DCA637DFC"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Linux (Mono / x64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-x64-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-x64-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0",
       "platforms": [
         "linux"
       ],
@@ -307,32 +307,32 @@
         "./mono.linux-x86_64",
         "./run"
       ],
-      "installTestPath": "./.omnisharp/1.38.2/run",
+      "installTestPath": "./.omnisharp/1.39.0/run",
       "platformId": "linux-x64",
       "isFramework": true,
-      "integrity": "F29A5E1E2A8EAAED8DF8AD37F838453986B8650E453EFCE56506AD8CC132EBE1"
+      "integrity": "929C5810507BF8C580B60C252D289EBE343729CC7E0CBB9B6DC629CFD1EF4F7D"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Linux (.NET 6 / x64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-x64-net6.0-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2-net6.0",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-x64-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
       "platforms": [
         "linux"
       ],
       "architectures": [
         "x86_64"
       ],
-      "installTestPath": "./.omnisharp/1.38.2-net6.0/OmniSharp.dll",
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
       "platformId": "linux-x64",
       "isFramework": false,
-      "integrity": "1F778F40FB54C4B11CB6CDFAB30266DAF2F327133685576BC8BD9D6EF2439C1F"
+      "integrity": "18B2C915DCCF36D981679DDCF4376D93D8610C0731E780E77D8C0FF065C9631E"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Linux (Framework / arm64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-arm64-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-arm64-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0",
       "platforms": [
         "linux"
       ],
@@ -343,26 +343,58 @@
         "./mono.linux-arm64",
         "./run"
       ],
-      "installTestPath": "./.omnisharp/1.38.2/run",
+      "installTestPath": "./.omnisharp/1.39.0/run",
       "platformId": "linux-arm64",
       "isFramework": true,
-      "integrity": "156D92F6C9F8381BCEE2C6C77F92C4B79C5E33AC6E7F7F61935FABD75F7AAFBD"
+      "integrity": "F36520159401CBC4B8E3EDC9A90777E7A9201715F77A1414145457C5F7D82878"
     },
     {
       "id": "OmniSharp",
       "description": "OmniSharp for Linux (.NET 6 / arm64)",
-      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.38.2/omnisharp-linux-arm64-net6.0-1.38.2.zip",
-      "installPath": ".omnisharp/1.38.2-net6.0",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-arm64-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
       "platforms": [
         "linux"
       ],
       "architectures": [
         "arm64"
       ],
-      "installTestPath": "./.omnisharp/1.38.2-net6.0/OmniSharp.dll",
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
       "platformId": "linux-arm64",
       "isFramework": false,
-      "integrity": "28AB43CC4BDD3FFE805E44A723A80235E8150E055056E44A0D772AD7BECAB045"
+      "integrity": "24E22A77DA869D528AEE9481CFE724EA8F02C11D63B68F9B080851A25509356D"
+    },
+    {
+      "id": "OmniSharp",
+      "description": "OmniSharp for Linux musl (.NET 6 / x64)",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-musl-x64-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
+      "platforms": [
+        "linux-musl"
+      ],
+      "architectures": [
+        "x86_64"
+      ],
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
+      "platformId": "alpine-x64",
+      "isFramework": false,
+      "integrity": "F723910A50F448584CB4C479CBD88C6F385BE8F088B70A941E4F7A2732EC92A8"
+    },
+    {
+      "id": "OmniSharp",
+      "description": "OmniSharp for Linux musl (.NET 6 / arm64)",
+      "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.0/omnisharp-linux-musl-arm64-net6.0-1.39.0.zip",
+      "installPath": ".omnisharp/1.39.0-net6.0",
+      "platforms": [
+        "linux-musl"
+      ],
+      "architectures": [
+        "arm64"
+      ],
+      "installTestPath": "./.omnisharp/1.39.0-net6.0/OmniSharp.dll",
+      "platformId": "alpine-arm64",
+      "isFramework": false,
+      "integrity": "CB7596A3610EFCBAFF48882F937C66144C47D3632AE284810F47F5859A12C934"
     },
     {
       "id": "Debugger",
@@ -453,7 +485,8 @@
       "url": "https://vsdebugger.azureedge.net/coreclr-debug-1-24-5/coreclr-debug-linux-arm64.zip",
       "installPath": ".debugger",
       "platforms": [
-        "linux"
+        "linux",
+        "linux-musl"
       ],
       "architectures": [
         "arm64"
@@ -471,7 +504,8 @@
       "url": "https://vsdebugger.azureedge.net/coreclr-debug-1-24-5/coreclr-debug-linux-x64.zip",
       "installPath": ".debugger",
       "platforms": [
-        "linux"
+        "linux",
+        "linux-musl"
       ],
       "architectures": [
         "x86_64"
@@ -514,7 +548,8 @@
       "url": "https://download.visualstudio.microsoft.com/download/pr/b8678010-2cd7-4201-a5e7-ba57920607d5/b846e9c7d7afdba54a72fae1dcb6c42c/razorlanguageserver-linux-x64-6.0.0-preview.5.21358.6.zip",
       "installPath": ".razor",
       "platforms": [
-        "linux"
+        "linux",
+        "linux-musl"
       ],
       "architectures": [
         "x86_64"
@@ -926,6 +961,22 @@
           "title": "Use .NET 6 build of OmniSharp",
           "description": "Use OmniSharp build for .NET 6. This version _does not_ support non-SDK-style .NET Framework projects, including Unity. SDK-style Framework, .NET Core, and .NET 5+ projects should see significant performance improvements."
         },
+        "omnisharp.sdkPath": {
+          "type": "string",
+          "scope": "window",
+          "description": "Specifies the path to a .NET SDK installation to use for project loading instead of the highest version installed. Applies when \"useModernNet\" is set to true. Example: \"/home/username/dotnet/sdks/6.0.300\"."
+        },
+        "omnisharp.sdkVersion": {
+          "type": "string",
+          "scope": "window",
+          "description": "Specifies the version of the .NET SDK to use for project loading instead of the highest version installed. Applies when \"useModernNet\" is set to true. Example: \"6.0.300\"."
+        },
+        "omnisharp.sdkIncludePrereleases": {
+          "type": "boolean",
+          "scope": "window",
+          "default": true,
+          "description": "Specifies whether to include preview versions of the .NET SDK when determining which version to use for project loading. Applies when \"useModernNet\" is set to true."
+        },
         "omnisharp.monoPath": {
           "type": "string",
           "scope": "machine",
diff --git a/src/observers/OptionChangeObserver.ts b/src/observers/OptionChangeObserver.ts
index 9b7caa11..3d86af45 100644
--- a/src/observers/OptionChangeObserver.ts
+++ b/src/observers/OptionChangeObserver.ts
@@ -23,6 +23,9 @@ const omniSharpOptions: ReadonlyArray<OptionsKey> = [
     "organizeImportsOnFormat",
     "enableAsyncCompletion",
     "useModernNet",
+    "sdkPath",
+    "sdkVersion",
+    "sdkIncludePrereleases",
     "analyzeOpenDocumentsOnly",
     "enableRoslynAnalyzers",
     "inlayHintsEnableForParameters",
diff --git a/src/omnisharp/options.ts b/src/omnisharp/options.ts
index 06cf0e47..6204896c 100644
--- a/src/omnisharp/options.ts
+++ b/src/omnisharp/options.ts
@@ -47,6 +47,9 @@ export class Options {
         public inlayHintsForImplicitVariableTypes: boolean,
         public inlayHintsForLambdaParameterTypes: boolean,
         public inlayHintsForImplicitObjectCreation: boolean,
+        public sdkPath: string,
+        public sdkVersion: string,
+        public sdkIncludePrereleases: boolean,
         public razorPluginPath: string,
         public defaultLaunchSolution: string,
         public monoPath: string,
@@ -69,6 +72,10 @@ export class Options {
         const path = Options.readPathOption(csharpConfig, omnisharpConfig);
         const useModernNet = omnisharpConfig.get<boolean>("useModernNet", true);
 
+        const sdkPath = omnisharpConfig.get<string>('sdkPath', '');
+        const sdkVersion = omnisharpConfig.get<string>('sdkVersion', '');
+        const sdkIncludePrereleases = omnisharpConfig.get<boolean>('sdkIncludePrereleases', true);
+
         // VS Code coerces unset string settings to the empty string.
         // Thus, to avoid dealing with the empty string AND undefined,
         // explicitly pass in the empty string as the fallback if the setting
@@ -182,6 +189,9 @@ export class Options {
             inlayHintsForImplicitVariableTypes,
             inlayHintsForLambdaParameterTypes,
             inlayHintsForImplicitObjectCreation,
+            sdkPath,
+            sdkVersion,
+            sdkIncludePrereleases,
             razorPluginPath,
             defaultLaunchSolution,
             monoPath,
diff --git a/src/omnisharp/server.ts b/src/omnisharp/server.ts
index db32db00..8c54289d 100644
--- a/src/omnisharp/server.ts
+++ b/src/omnisharp/server.ts
@@ -399,6 +399,18 @@ export class OmniSharpServer {
             args.push('RoslynExtensionsOptions:EnableAsyncCompletion=true');
         }
 
+        if (options.sdkPath.length > 0) {
+            args.push(`Sdk:Path='${options.sdkPath}'`);
+        }
+
+        if (options.sdkVersion.length > 0) {
+            args.push(`Sdk:Version='${options.sdkVersion}'`);
+        }
+
+        if (options.sdkIncludePrereleases) {
+            args.push(`Sdk:IncludePrereleases=true`);
+        }
+
         if (options.inlayHintsEnableForParameters === true) {
             args.push(`RoslynExtensionsOptions:InlayHintsOptions:EnableForParameters=${options.inlayHintsEnableForParameters.toString()}`);
             args.push(`RoslynExtensionsOptions:InlayHintsOptions:ForLiteralParameters=${options.inlayHintsForLiteralParameters.toString()}`);
diff --git a/src/platform.ts b/src/platform.ts
index 59eae240..e8896eb5 100644
--- a/src/platform.ts
+++ b/src/platform.ts
@@ -41,9 +41,9 @@ export class LinuxDistribution {
      */
     public toTelemetryString(): string {
         const allowedList = [
-            'antergos', 'arch', 'centos', 'debian', 'deepin', 'elementary', 'fedora',
-            'galliumos', 'gentoo', 'kali', 'linuxmint', 'manjoro', 'neon', 'opensuse',
-            'parrot', 'rhel', 'ubuntu', 'zorin'
+            'alpine', 'antergos', 'arch', 'centos', 'debian', 'deepin', 'elementary',
+            'fedora', 'galliumos', 'gentoo', 'kali', 'linuxmint', 'manjoro', 'neon',
+            'opensuse', 'parrot', 'rhel', 'ubuntu', 'zorin'
         ];
 
         if (this.name === unknown || allowedList.indexOf(this.name) >= 0) {
@@ -130,7 +130,7 @@ export class PlatformInformation {
     }
 
     public isLinux(): boolean {
-        return this.platform === 'linux';
+        return this.platform.startsWith('linux');
     }
 
     public toString(): string {
@@ -156,7 +156,7 @@ export class PlatformInformation {
     }
 
     public static async GetCurrent(): Promise<PlatformInformation> {
-        let platform = os.platform();
+        let platform: string = os.platform();
         let architecturePromise: Promise<string>;
         let distributionPromise: Promise<LinuxDistribution>;
 
@@ -172,6 +172,10 @@ export class PlatformInformation {
                 break;
 
             case 'linux':
+                if (await this.GetIsMusl()) {
+                    // Update platform so we can distuguish between linux and linux-musl.
+                    platform = "linux-musl";
+                }
                 architecturePromise = PlatformInformation.GetUnixArchitecture();
                 distributionPromise = LinuxDistribution.GetCurrent();
                 break;
@@ -199,22 +203,31 @@ export class PlatformInformation {
         });
     }
 
-    private static async GetUnixArchitecture(): Promise<string> {
-        return util.execChildProcess('uname -m')
-            .then(architecture => {
-                if (architecture) {
-                    architecture = architecture.trim();
-
-                    switch (architecture) {
-                        case "aarch64":
-                            return "arm64";
-                        default:
-                            return architecture;
-                    }
-                }
+    private static async GetUnixArchitecture(): Promise<string | undefined> {
+        let architecture = await util.execChildProcess('uname -m');
 
-                return null;
-            });
+        if (architecture) {
+            architecture = architecture.trim();
+
+            switch (architecture) {
+                case "aarch64":
+                    return "arm64";
+                default:
+                    return architecture;
+            }
+        }
+
+        return undefined;
+    }
+
+    private static async GetIsMusl() {
+        let output;
+        try {
+            output = await util.execChildProcess('ldd --version');
+        } catch (err) {
+            output = err.message;
+        }
+        return output.indexOf('musl') > -1;
     }
 
     public isValidPlatformForMono(): boolean {
diff --git a/tasks/offlinePackagingTasks.ts b/tasks/offlinePackagingTasks.ts
index 86cd3413..3c68ea38 100644
--- a/tasks/offlinePackagingTasks.ts
+++ b/tasks/offlinePackagingTasks.ts
@@ -31,6 +31,8 @@ export const offlinePackages = [
     { platformInfo: new PlatformInformation('win32', 'arm64'), id: "win32-arm64", isFramework: includeFrameworkOmniSharp },
     { platformInfo: new PlatformInformation('linux', 'x86_64'), id: "linux-x64", isFramework: includeFrameworkOmniSharp },
     { platformInfo: new PlatformInformation('linux', 'arm64'), id: "linux-arm64", isFramework: includeFrameworkOmniSharp },
+    { platformInfo: new PlatformInformation('linux-musl', 'x86_64'), id: "alpine-x64", isFramework: includeFrameworkOmniSharp },
+    { platformInfo: new PlatformInformation('linux-musl', 'arm64'), id: "alpine-arm64", isFramework: includeFrameworkOmniSharp },
     { platformInfo: new PlatformInformation('darwin', 'x86_64'), id: "darwin-x64", isFramework: includeFrameworkOmniSharp },
     { platformInfo: new PlatformInformation('darwin', 'arm64'), id: "darwin-arm64", isFramework: includeFrameworkOmniSharp },
 ];


Test patch:
diff --git a/test/unitTests/Fakes/FakeOptions.ts b/test/unitTests/Fakes/FakeOptions.ts
index 222ce14d..2c3c1ba9 100644
--- a/test/unitTests/Fakes/FakeOptions.ts
+++ b/test/unitTests/Fakes/FakeOptions.ts
@@ -47,6 +47,9 @@ export function getEmptyOptions(): Options {
         /* inlayHintsForImplicitVariableTypes */false,
         /* inlayHintsForLambdaParameterTypes */false,
         /* inlayHintsForImplicitObjectCreation */false,
+        /* sdkPath */"",
+        /* sdkVersion */"",
+        /* sdkIncludePrereleases */false,
         /* razorPluginPath */"",
         /* defaultLaunchSolution */"",
         /* monoPath */"",