diff --git a/test/dotnet/install_dotnet_latest_when_version_is_empty.sh b/test/dotnet/install_dotnet_latest_when_version_is_empty.sh
index cd23edcf1..b28c45a2f 100644
--- a/test/dotnet/install_dotnet_latest_when_version_is_empty.sh
+++ b/test/dotnet/install_dotnet_latest_when_version_is_empty.sh
@@ -18,9 +18,6 @@ expected=$(fetch_latest_version)
 check "Latest .NET SDK version installed" \
 is_dotnet_sdk_version_installed "$expected"
 
-check "Build and run example project" \
-dotnet run --project projects/net8.0
-
 # Report results
 # If any of the checks above exited with a non-zero exit code, the test will fail.
 reportResults
\ No newline at end of file
diff --git a/test/dotnet/install_dotnet_lts.sh b/test/dotnet/install_dotnet_lts.sh
index bc2d40782..da9175c15 100644
--- a/test/dotnet/install_dotnet_lts.sh
+++ b/test/dotnet/install_dotnet_lts.sh
@@ -18,9 +18,6 @@ expected=$(fetch_latest_version_in_channel "LTS")
 check "Latest LTS version installed" \
 is_dotnet_sdk_version_installed "$expected"
 
-check "Build and run example project" \
-dotnet run --project projects/net8.0
-
 # Report results
 # If any of the checks above exited with a non-zero exit code, the test will fail.
 reportResults
\ No newline at end of file
diff --git a/test/dotnet/install_dotnet_multiple_versions.sh b/test/dotnet/install_dotnet_multiple_versions.sh
index 5f0f12533..87bf8caf4 100644
--- a/test/dotnet/install_dotnet_multiple_versions.sh
+++ b/test/dotnet/install_dotnet_multiple_versions.sh
@@ -13,6 +13,9 @@ source dev-container-features-test-lib
 source dotnet_env.sh
 source dotnet_helpers.sh
 
+check ".NET SDK 9.0 installed" \
+is_dotnet_sdk_version_installed "9.0"
+
 check ".NET SDK 8.0 installed" \
 is_dotnet_sdk_version_installed "8.0"
 
@@ -22,9 +25,33 @@ 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 Core SDK 3.1 installed" \
+is_dotnet_sdk_version_installed "3.1"
+
 check "Build example class library" \
 dotnet build projects/multitargeting
 
+check "Build and run .NET 9.0 project" \
+dotnet run --project projects/net9.0
+
+check "Build and run .NET 8.0 project" \
+dotnet run --project projects/net8.0
+
+check "Build and run .NET 7.0 project" \
+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 Core 3.1 project" \
+dotnet run --project projects/netcoreapp3.1
+
 # Report results
 # If any of the checks above exited with a non-zero exit code, the test will fail.
 reportResults
\ No newline at end of file
diff --git a/test/dotnet/projects/multitargeting/example_classlib.csproj b/test/dotnet/projects/multitargeting/example_classlib.csproj
index ba47b0f46..8a8ca0c32 100644
--- a/test/dotnet/projects/multitargeting/example_classlib.csproj
+++ b/test/dotnet/projects/multitargeting/example_classlib.csproj
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>net8.0;net7.0;net6.0</TargetFrameworks>
+    <TargetFrameworks>net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
   </PropertyGroup>
diff --git a/test/dotnet/projects/net5.0/example_project.csproj b/test/dotnet/projects/net5.0/example_project.csproj
index 63450c349..9fa0cf3f7 100644
--- a/test/dotnet/projects/net5.0/example_project.csproj
+++ b/test/dotnet/projects/net5.0/example_project.csproj
@@ -7,7 +7,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
   </ItemGroup>
 
 </Project>
\ No newline at end of file
diff --git a/test/dotnet/projects/net6.0/example_project.csproj b/test/dotnet/projects/net6.0/example_project.csproj
index aa2434cb7..48c9b4e8a 100644
--- a/test/dotnet/projects/net6.0/example_project.csproj
+++ b/test/dotnet/projects/net6.0/example_project.csproj
@@ -8,7 +8,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
   </ItemGroup>
 
 </Project>
\ No newline at end of file
diff --git a/test/dotnet/projects/net7.0/example_project.csproj b/test/dotnet/projects/net7.0/example_project.csproj
index 424f54ae7..11953d275 100644
--- a/test/dotnet/projects/net7.0/example_project.csproj
+++ b/test/dotnet/projects/net7.0/example_project.csproj
@@ -8,7 +8,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
   </ItemGroup>
 
 </Project>
\ No newline at end of file
diff --git a/test/dotnet/projects/net8.0/example_project.csproj b/test/dotnet/projects/net8.0/example_project.csproj
index 2f1f60891..ddac9409e 100644
--- a/test/dotnet/projects/net8.0/example_project.csproj
+++ b/test/dotnet/projects/net8.0/example_project.csproj
@@ -8,7 +8,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
   </ItemGroup>
 
 </Project>
\ No newline at end of file
diff --git a/test/dotnet/projects/net9.0/Program.cs b/test/dotnet/projects/net9.0/Program.cs
new file mode 100644
index 000000000..59fb426af
--- /dev/null
+++ b/test/dotnet/projects/net9.0/Program.cs
@@ -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 ?? [];
+}
\ No newline at end of file
diff --git a/test/dotnet/projects/net9.0/example_project.csproj b/test/dotnet/projects/net9.0/example_project.csproj
new file mode 100644
index 000000000..6cc1da0d0
--- /dev/null
+++ b/test/dotnet/projects/net9.0/example_project.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>net9.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+  </ItemGroup>
+
+</Project>
\ No newline at end of file
diff --git a/test/dotnet/projects/netcoreapp3.1/example_project.csproj b/test/dotnet/projects/netcoreapp3.1/example_project.csproj
index e2e909c17..f8859db8b 100644
--- a/test/dotnet/projects/netcoreapp3.1/example_project.csproj
+++ b/test/dotnet/projects/netcoreapp3.1/example_project.csproj
@@ -3,12 +3,11 @@
   <PropertyGroup>
     <OutputType>Exe</OutputType>
     <TargetFramework>netcoreapp3.1</TargetFramework>
-    <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
   </ItemGroup>
 
 </Project>
\ No newline at end of file
diff --git a/test/dotnet/scenarios.json b/test/dotnet/scenarios.json
index 2fd74f587..641753632 100644
--- a/test/dotnet/scenarios.json
+++ b/test/dotnet/scenarios.json
@@ -40,10 +40,13 @@
         "remoteUser": "vscode",
         "features": {
             "dotnet": {
-                "version": "8.0.100-preview.6.23330.14",
+                "version": "9.0",
                 "additionalVersions": [
+                    "8.0",
                     "7.0",
-                    "6.0"
+                    "6.0",
+                    "5.0",
+                    "3.1"
                 ]
             }
         }
@@ -92,4 +95,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/test/dotnet/test.sh b/test/dotnet/test.sh
index 50d79941f..11cc73126 100644
--- a/test/dotnet/test.sh
+++ b/test/dotnet/test.sh
@@ -24,9 +24,6 @@ expected=$(fetch_latest_version)
 check "Latest .NET SDK version installed" \
 is_dotnet_sdk_version_installed "$expected"
 
-check "Build and run example project" \
-dotnet run --project projects/net8.0
-
 # Report results
 # If any of the checks above exited with a non-zero exit code, the test will fail.
 reportResults
\ No newline at end of file