Skip to content

Supporting dotnet 10.0 preview version #1305

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
3 changes: 2 additions & 1 deletion src/dotnet/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "dotnet",
"version": "2.2.1",
"version": "2.3.0",
"name": "Dotnet CLI",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/dotnet",
"description": "This Feature installs the latest .NET SDK, which includes the .NET CLI and the shared runtime. Options are provided to choose a different version or additional versions.",
Expand All @@ -11,6 +11,7 @@
"latest",
"lts",
"none",
"10.0",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we change it to 10.0-preview?

Copy link
Contributor Author

@Kaniska244 Kaniska244 May 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @eljog ,

The url https://builds.dotnet.microsoft.com/dotnet/Sdk/ used in dotnet feature to download the installation package, expects this version 10 to be passed on as 10.0 in the same way like other versions. The only way to label it as preview version would be possible if the exact version is provided like 10.0.100-preview.3.25201.16.

Whereas in case of the dotnet devcontainer image, the base image is downloaded from mcr.microsoft.com/dotnet/ registry where the dotnet 10 versions are actuality labeled as 10.0-preview for e.g. mcr.microsoft.com/dotnet/sdk:10.0-preview-trixie-slim. Thats why it was possible there to label the version as 10.0-preview for the image.

So in case of the dotnet feature if we want to change the version from 10.0 to 10.0-preview, we will need a small customization in the feature to remove the preview part from the version parameter & use it in the script. Kindly let me know if we should do something like that for this PR.

With Regards,
Kaniska

"8.0",
"7.0",
"6.0"
Expand Down
1 change: 1 addition & 0 deletions src/dotnet/scripts/vendor/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@ dotnet-install.sh [--version latest] --channel 6.0 [--quality GA]
dotnet-install.sh [--version latest] --channel 6.0.4xx [--quality GA]
dotnet-install.sh [--version latest] --channel 8.0 --quality preview
dotnet-install.sh [--version latest] --channel 8.0 --quality daily
dotnet-install.sh [--version latest] --channel 10.0 --quality preview
dotnet-install.sh --version 6.0.413
```
8 changes: 4 additions & 4 deletions test/dotnet/install_dotnet_multiple_versions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ is_dotnet_sdk_version_installed "7.0"
check ".NET SDK 6.0 installed" \
is_dotnet_sdk_version_installed "6.0"

check ".NET SDK 5.0 installed" \
is_dotnet_sdk_version_installed "5.0"
check ".NET SDK 10.0 installed" \
is_dotnet_sdk_version_installed "10.0"

check ".NET Core SDK 3.1 installed" \
is_dotnet_sdk_version_installed "3.1"
Expand All @@ -46,8 +46,8 @@ dotnet run --project projects/net7.0
check "Build and run .NET 6.0 project" \
dotnet run --project projects/net6.0

check "Build and run .NET 5.0 project" \
dotnet run --project projects/net5.0
check "Build and run .NET 10.0 project" \
dotnet run --project projects/net10.0

check "Build and run .NET Core 3.1 project" \
dotnet run --project projects/netcoreapp3.1
Expand Down
32 changes: 32 additions & 0 deletions test/dotnet/projects/net10.0/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using Newtonsoft.Json;

string json = """
{
"Name": "Inception",
"ReleaseDate": "2010-07-08T00:00:00",
"Genres": [
"Action",
"Thriller"
]
}
""";

Movie? m = JsonConvert.DeserializeObject<Movie>(json);

if (m == default)
{
Console.WriteLine("Decoding failed!");
}
else
{
Console.WriteLine($"Movie name: {m.Name}");
Console.WriteLine($"Release Date: {m.ReleaseDate}");
Console.WriteLine($"Genres: {string.Join(", ", m.Genres)}");
}

class Movie(string? name, DateTime releaseDate, List<string>? genres)
{
public string Name { get; set; } = name ?? "Default Name";
public DateTime ReleaseDate { get; set; } = releaseDate;
public List<string> Genres { get; set; } = genres ?? [];
}
14 changes: 14 additions & 0 deletions test/dotnet/projects/net10.0/example_project.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions test/dotnet/scenarios.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@
"remoteUser": "vscode",
"features": {
"dotnet": {
"version": "9.0",
"version": "10.0",
"additionalVersions": [
"9.0",
"8.0",
"7.0",
"6.0",
"5.0",
"3.1"
]
}
Expand Down