dotnet / dotnet/vscode-dotnet-runtime

dotnet.ensureDotnetDependencies does not install libicu dependencies on Linux WSL

Open
#2,728 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
209
Forks
455
PR merge metrics
No merged PRs in 30d

Description

## Summary

`dotnet.ensureDotnetDependencies` does not appear to install the required `libicu` dependencies correctly on Linux under WSL. After invoking the command against the acquired .NET executable, running `dotnet --info` still fails with the missing ICU dependency error.

## Repro steps

On Ubuntu using WSL, acquire .NET with the extension, then run:

```ts
await vscode.commands.executeCommand('dotnet.ensureDotnetDependencies', {
command: acquireResult.dotnetPath,
arguments: ['--info']
});
```

Then run:

```bash
/home/shech/.config/Code/User/globalStorage/ms-dotnettools.vscode-dotnet-runtime/.dotnet/dotnet --info
```

## Expected behavior

The dependency installer restores/installs the required Linux dependencies, including `libicu`, so the acquired .NET executable can run successfully.

## Actual behavior

The dependency installation flow reports a failure, and `dotnet --info` still fails because ICU is missing:

```text
Process terminated.
Couldn't find a valid ICU package installed on the system. Please install libicu (or icu-libs) using your package manager and try again. Alternatively you can set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support. Please see https://aka.ms/dotnet-missing-libicu for more information.
at System.Environment.FailFast(System.Runtime.CompilerServices.StackCrawlMarkHandle, System.String, System.Runtime.CompilerServices.ObjectHandleOnStack, System.String)
at System.Environment.FailFast(System.Threading.StackCrawlMark ByRef, System.String, System.Exception, System.String)
at System.Environment.FailFast(System.String)
at System.Globalization.GlobalizationMode+Settings..cctor()
at System.Globalization.CultureData.CreateCultureWithInvariantData()
at System.Globalization.CultureData.get_Invariant()
at System.Globalization.TextInfo..cctor()
at System.String.ToLowerInvariant()
at System.Text.EncodingHelper.GetEncodingFromCharset()
at System.ConsolePal.GetConsoleEncoding()
at System.Console.get_OutputEncoding()
at Microsoft.DotNet.Cli.AutomaticEncodingRestorer..ctor()
at Microsoft.DotNet.Cli.Program.Main(System.String[])
Aborted /home/shech/.config/Code/User/globalStorage/ms-dotnettools.vscode-dotnet-runtime/.dotnet/dotnet --info
```

The extension notification first says:

```text
Failed to run .NET runtime. You may be missing key Linux libraries. Install them now?
```

After choosing install, it reports:

```text
The dependency installer failed. Try installing dependencies manually.
```

## Environment

- Extension: `ms-dotnettools.vscode-dotnet-runtime` version `3.1.0`
- OS: Linux x64 under WSL2
- Kernel: `Linux CPC-shech-BS4DQ 6.6.114.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Mon Dec 1 20:46:23 UTC 2025 x86_64 GNU/Linux`
- VS Code:
- Version: `1.124.0`
- Commit: `1b50d58d73426c9171299ec4037d01365d995b78`
- Date: `2026-06-09T21:29:32-07:00`
- Electron: `42.2.0`
- ElectronBuildId: `14159160`
- Chromium: `148.0.7778.97`
- Node.js: `24.15.0`
- V8: `14.8.178.14-electron.0`
- OS: `Linux x64 6.6.114.1-microsoft-standard-WSL2 snap`

## Additional context

Screenshots show the extension prompts:

1. `Failed to run .NET runtime. You may be missing key Linux libraries. Install them now?`
2. `The dependency installer failed. Try installing dependencies manually.`

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the `dotnet.ensureDotnetDependencies` command on Ubuntu under WSL2 with the acquired executable and `--info` argument. Trace the dependency installation flow and its failure reporting, then verify that the required ICU dependency is installed and the executable completes `dotnet --info` successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, typescript
Domain
devtools, operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.