#Net100

How do Newtonsoft.Json and System.Text.Json cause unloadability issues?

Newtonsoft.Json and System.Text.Json are libraries that achieve one goal: to provide an easy way to parse JSON files by serializing and deserializing them. In modern .NET frameworks, such as .NET 10.0, AssemblyLoadContext was introduced to provide you a way to load and unload assemblies cooperatively, and it was first released with .NET Core 1.0.

As a result, it’s frequently used in cases where loading and unloading assemblies are required, such as the plugin system in a C# application. However, there is a massive drawback when it comes to unloading assemblies that internally use Newtonsoft.Json and System.Text.Json. When an assembly uses one of the two libraries and their serialization functions, and when unloading such assembly is requested by AssemblyLoadContext.Unload(), even if garbage collection is forced, the assembly will not unload.

We will use two small Nitrocid addons as examples: Nitrocid.Extras.Chemistry and Nitrocid.Extras.Mods. While the Chemistry addon becomes impossible to unload once the element command is used, the Mods addon also becomes impossible to unload once it registers its own settings instance to the settings manager. We will first take a look at Nitrocid.Extras.Mods.

Newtonsoft.Json – Nitrocid.Extras.Mods

The Tips addon includes a settings class that is defined like this:

 using Newtonsoft.Json;  using Nitrocid.Base.Kernel.Configuration;  using Nitrocid.Base.Kernel.Configuration.Instances;  using Nitrocid.Base.Kernel.Configuration.Settings;  using Nitrocid.Base.Kernel.Exceptions;  using Nitrocid.Base.Languages;  using Nitrocid.Base.Misc.Reflection.Internal;   namespace Nitrocid.Extras.Mods.Settings  {      /// <summary>      /// Configuration instance for Mods      /// </summary>      public partial class ModsConfig : BaseKernelConfig      {          /// <inheritdoc/>          [JsonIgnore]          public override SettingsEntry[] SettingsEntries          {              get              {                  var dataStream = ResourcesManager.GetData("ModsSettings.json", ResourcesType.Misc, typeof(ModsConfig).Assembly) ??                      throw new KernelException(KernelExceptionType.Config, LanguageTools.GetLocalized("NKS_MODS_SETTINGS_EXCEPTION_ENTRIESFAILED"));                  string dataString = ResourcesManager.ConvertToString(dataStream);                  return ConfigTools.GetSettingsEntries(dataString);              }          }      }  } 
 using Nitrocid.Base.Kernel.Configuration.Instances;   namespace Nitrocid.Extras.Mods.Settings  {      /// <summary>      /// Configuration instance for Mods      /// </summary>      public partial class ModsConfig : BaseKernelConfig      {          /// <summary>          /// Automatically start the kernel modifications on boot.          /// </summary>          public bool StartKernelMods { get; set; }          /// <summary>          /// Allow untrusted mods          /// </summary>          public bool AllowUntrustedMods { get; set; }          /// <summary>          /// Write the filenames of the mods that will not run on startup. When you're finished, write "q". Write a minus sign next to the path to remove an existing mod.          /// </summary>          public string BlacklistedModsString { get; set; } = "";          /// <summary>          /// Show the mod commands count on help          /// </summary>          public bool ShowModCommandsCount { get; set; } = true;      }  } 

Internally, Nitrocid uses Newtonsoft.Json to read the configuration entries from the user configuration files found under the following paths:

  • Windows: %LOCALAPPDATA%\KS\
  • Linux: ~/.config/ks/

So, in this case, the tips settings are stored in:

  • Windows: %LOCALAPPDATA%\KS\ModsConfig.json
  • Linux: ~/.config/ks/ModsConfig.json

When the current main branch of Nitrocid shuts down, it tells all the addon load context classes that the addon subsystem manages to unload all the addons’ load contexts when the addon finally unloads itself, as in the following code:

 [MethodImpl(MethodImplOptions.NoInlining)]  internal static void UnloadAddons()  {      Dictionary<string, string> errors = [];      for (int addonIdx = addons.Count - 1; addonIdx >= 0; addonIdx--)      {          var addonInfo = addons[addonIdx];          var addonInstance = addonInfo.Addon;          var alc = addonInfo.alc;          try          {              using var context = alc.EnterContextualReflection();              addonInstance.StopAddon();          }          catch (Exception ex)          {              DebugWriter.WriteDebug(DebugLevel.E, "Failed to stop addon {0}. {1}", vars: [addonInfo.AddonName, ex.Message]);              DebugWriter.WriteDebugStackTrace(ex);              errors.Add(addonInfo.AddonName, ex is KernelException kex ? kex.OriginalExceptionMessage : ex.Message);          }          finally          {              // Unload the assembly on garbage collection              alc.Unload();              addons.RemoveAt(addonIdx);          }      }       // Unload all addon assemblies      GC.Collect();      GC.WaitForPendingFinalizers();      GC.Collect();      if (errors.Count != 0)          throw new KernelException(KernelExceptionType.AddonManagement, LanguageTools.GetLocalized("NKS_KERNEL_EXTENSIONS_ADDONS_EXCEPTION_STOPFAILED") + $"\n  - {string.Join("\n  - ", errors.Select((kvp) => $"{kvp.Key}: {kvp.Value}"))}");  } 

When looking at this code, one thinks that all addon assemblies must unload once we call the garbage collector to force disposal of all load contexts. When Nitrocid shut down, we’ve placed the breakpoint at the stage where the RPC is supposed to stop, as seen here.

When looking at the output window, we have seen that some of the addons got unloaded successfully. However, all addons that used the kernel configuration subsystem to read their own configuration that the kernel knows about didn’t get unloaded, including the Mods addon, as per the output window:

 'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.Calculators/Nitrocid.Extras.Calculators.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.UnitConv/Nitrocid.Extras.UnitConv.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.ColorConvert/Nitrocid.Extras.ColorConvert.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.Dictionary/Nitrocid.Extras.Dictionary.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.Caffeine/Nitrocid.Extras.Caffeine.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/ThemePacks/Nitrocid.ThemePacks.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.ThemeStudio/Nitrocid.Extras.ThemeStudio.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.Hashes/Nitrocid.Extras.Hashes.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.BeepSynth/Nitrocid.Extras.BeepSynth.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons.Essentials/Extras.Images/Nitrocid.Extras.Images.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.Docking/Nitrocid.Extras.Docking.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:\Users\aptiv\Aptivi\Source\Public\Nitrocid\public\Nitrocid\KSBuild\net10.0\Addons.Essentials\Extras.Images.Icons\Terminaux.Images.Icons.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons.Essentials/Extras.Images.Icons/Nitrocid.Extras.Images.Icons.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.Pastebin/Nitrocid.Extras.Pastebin.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.Chemistry/Nitrocid.Extras.Chemistry.dll'  'Nitrocid.exe' (CoreCLR: clrhost): Unloaded 'C:/Users/aptiv/Aptivi/Source/Public/Nitrocid/public/Nitrocid/KSBuild/net10.0/Addons/Extras.Notes/Nitrocid.Extras.Notes.dll' 

That’s 15 addons out of 31 addons! Now, let’s use Visual Studio to examine the situation. We are now at the RemoteProcedure.StopRPC() line, and the we’ve seen that 16 addons didn’t get unloaded, when they’re supposed to. Looking at the Diagnostic tools > Memory Usage and taking a snapshot of the memory, we’ve seen an object type of Newtonsoft.Json.Serialization.JsonProperty in the object type view of the snapshot. The count was 1715, the size was 376608, and the inclusive size was 5918488.

Digging deeper revealed something interesting.

This revealed that Newtonsoft.Json has been caching properties as soon as the Nitrocid kernel processes and reads the configuration, as per:

 if (ConfigTools.IsCustomSettingBuiltin(typeName))      baseConfigurations[typeName] = (BaseKernelConfig?)JsonConvert.DeserializeObject(jsonContents, type.GetType()) ??          throw new KernelException(KernelExceptionType.Config, LanguageTools.GetLocalized("NKS_KERNEL_CONFIGURATION_EXCEPTION_BASECONFIGDESERIALIZE"), typeName);  else      customConfigurations[typeName] = (BaseKernelConfig?)JsonConvert.DeserializeObject(jsonContents, type.GetType()) ??          throw new KernelException(KernelExceptionType.Config, LanguageTools.GetLocalized("NKS_KERNEL_CONFIGURATION_EXCEPTION_CUSTOMCONFIGDESERIALIZE"), typeName); 

The default contract resolver contains caches to contracts for each type, which, in turn, caches the properties as seen here:

This improves performance of future JSON operations, but causes unloading to fail due to them being strong references.

System.Text.Json – Nitrocid.Extras.Chemistry

When it comes to System.Text.Json, we’ve run another Nitrocid session and ran the element Br command to let ChemiStar load all elements before we shut the kernel down to tell all assemblies to unload. This caused the Chemistry addon to no longer unload. We’ve used the memory snapshot function and searched for ChemiStar-related classes, and got the JSON type info and property info instances that are related to how caching works.

As you can see, we have JSON serialization options that caches the types and the properties for performance reasons. However, those, again, cause unloading issues.

In general, mods and addons that use any of Newtonsoft.Json and System.Text.Json’s serialization functions will no longer be able to be unloaded once Nitrocid shuts down. You can find more information in one of the GitHub issues listed here:

#Net #Net100 #dotnet #news #NewtonsoftJson #SystemTextJson #Tech #Technology #update

Mouse improvements in Terminaux 8.1

Since Terminaux 4.0, mouse support was added to make C# console applications more interactive. This was done by abstracting the implementations of both the Windows API for detecting mouse clicks in the terminal using the combination of PeekConsoleInput() and MOUSE_INPUT_RECORD, and the Linux method for mouse clicks using the SGR/X10 VT sequences that we have to parse ourselves. The end result is a single function that handles mouse and keyboard input on a ReadPointerOrKey() function, further branched to a non-blocking version.

As a result, we’ve integrated mouse support to all kinds of interactive user interfaces within Terminaux, which resulted in both the library and Nitrocid handling all mouse input, as well as Terminaux programs having mouse support built-in without re-implementing support. However, there was room for improvements when it comes to the selection-based user interfaces.

Terminaux 8.1, which will be released two weeks from now, will feature improvements to mouse support when it comes to the choice selection style TUIs, as well as the interactive selector TUIs. Starting from this version:

  • In the selector TUI, double-clicking on an item in either the first pane or the second pane will trigger the “submit” action, which, by default, is defined to an action bound to the Enter key. For example, in Nitrocid 0.2.0, if you double-click on an SMultivar settings entry in the second pane, the child settings entries underneath this entry will be revealed.
  • In both the selection style and the infobox selection input TUIs, double-clicking on an item in the list of choices will confirm the selection. This allows you to confirm your selection without accidentally selecting a wrong item, since those TUIs always show a list of choices.

This is a behavioral change to the three affected Terminaux input components, which will land to Nitrocid 0.2.0 and 0.1.0 Service Pack 6 next month.

Photo by Rainer Eli on Unsplash

#Net #Net100 #Net80 #C #Console #ConsoleApp #ConsoleApplication #csharp #dotnet #Mouse #MousePointer #news #Pointer #Tech #Technology #terminal #terminaux #Terminaux8 #Terminaux81 #update

Ubuntu 24.04 LTS Noble Numbat now includes .NET 10.0!

.NET 10.0 was released more than a month ago, and it brought many new features and improvements to enhance your modern and cross-platform .NET applications. While we are grateful that we’re using this version of .NET across our projects, Ubuntu 24.04 LTS Noble Numbat now includes the final release of .NET 10.0 in its official Ubuntu repository, which means that people can now install this version of .NET easily and straight from the official repository. Those packages will be available in the official repository in just a few hours.

According to the latest progress of the bug report that tracks the stable release of .NET 10.0 for Ubuntu 24.04, the .NET 10.0 packages have been uploaded to the Noble Numbat repositories, holding version 10.0.100-10.0.0-0ubuntu1, with the following Ubuntu-specific changes:

dotnet10 (10.0.100-10.0.0-0ubuntu1~24.04.1) noble; urgency=medium  * New upstream release (LP: #2130891)  * d/{sdk-check-config.json,rules}: `dotnet sdk check` tool points to    Canonical's release database.  * d/rules: add `--branding rtm` to DOTNET_BUILD_ARGS.  * d/p/0007-fix-tempdir-on-exit-trap.patch: fix unbound variable error.  * d/dotnet-host-10.0.links: fixed dnx link name to /usr/bin/dnx (DNX_BIN).  * d/t/regular-tests: synced with upstream to fix failing tests and add new    ones for .NET 10.

The new packages are now available, and those who already installed the second release candidate will be able to update to the official release via either the software updater that Ubuntu provides, or the sudo apt update and sudo apt dist-upgrade commands.

#Net #Net100 #2130891 #dotnet #dotnet100 #news #Tech #Technology #Ubuntu #update

Arch Linux now ships .NET 10.0!

.NET 10.0 was released last month as a final stable release, but packaging for Linux distributions has faced issues, which have been mostly fixed. While Ubuntu 24.04 LTS Noble Numbat is still waiting for this version of .NET, Arch Linux users can now finally install the .NET 10.0 suite, including the runtime and the SDK, as well as the ASP.NET runtime for Blazor websites.

The packages for .NET 9.0 have now been split to separate packages to support parallel installation of both .NET 9.0 and 10.0, just like previous versions of .NET, such as the previous LTS, .NET 8.0, released on November 2023.

The following packages have been updated to install .NET 10.0:

To install .NET 10.0, use the relevant pacman command to install the packages, such as pacman -Syu dotnet-sdk. Additionally, you may experience failures during the install if you chose to upgrade all your packages using pacman -Syu, in case you have .NET 9.0 installed, such as “failed to prepare transaction (could not satisfy dependencies).” In this case, if you require .NET 9.0, you’ll need to install, for example, aspnet-runtime-9.0, and to remove aspnet-runtime using pacman -Rs aspnet-runtime.

All packages for .NET 10.0 will be in the first feature band only, just like the previous .NET versions. Feature bands that are after the first one won’t make it to the packaging effort, just like officially stated.

Our AUR packages will be updated to use .NET 10.0.

#net10 #net100 #arch #archLinux #dotnet #dotnet100 #news #tech #technology #update

Ubuntu 26.04 LTS Resolute Raccoon now includes .NET 10.0!

.NET 10.0 was released two weeks ago, and it brought many new features and improvements to enhance your modern and cross-platform .NET applications. While we are grateful that we’re using this version of .NET across our projects, Ubuntu 26.04 LTS Resolute Raccoon now includes the final release of .NET 10.0 in its official Ubuntu repository, which means that people can now install this version of .NET easily and straight from the official repository. Those packages will be available in the official repository in just a few hours.

According to the latest progress of the bug report that tracks the stable release of .NET 10.0 for Ubuntu 26.04, the .NET 10.0 packages have been uploaded to the Resolute Raccoon repositories, holding version 10.0.100-10.0.0-0ubuntu1, with the following Ubuntu-specific changes:

dotnet10 (10.0.100-10.0.0-0ubuntu1) resolute; urgency=medium  * New upstream release (LP: #2130891)  * d/{sdk-check-config.json,rules}: `dotnet sdk check` tool points to    Canonical's release database.  * d/rules: add `--branding rtm` to DOTNET_BUILD_ARGS.  * d/p/0007-fix-tempdir-on-exit-trap.patch: fix unbound variable error.  * d/control: pin LLVM 20 to avoid FTBFS on LLVM 21.  * d/dotnet-host-10.0.links: fixed dnx link name to /usr/bin/dnx (DNX_BIN).  * d/eng/test-runner/*/obj: removed unwanted build artifact directory from    source package.  * d/t/regular-tests: synced with upstream to fix failing tests and add new    ones for .NET 10.

The new packages will be available soon, and those who already installed the second release candidate will be able to update to the official release via either the software updater that Ubuntu provides, or the sudo apt update and sudo apt dist-upgrade commands.

As for the older Ubuntu releases, according to the release rhythm that we’ve linked in an earlier article, we should expect progress for the current LTS version of Ubuntu, which is Ubuntu 24.04 LTS Noble Numbat.

#net #net100 #2130891 #dotnet #dotnet100 #news #tech #technology #ubuntu #update

Nitrocid meets .NET 10.0!

.NET 10.0 is now live this week, and we are in the process of migrating Nitrocid to this version of the framework. This makes Nitrocid benefit from new features and many more improvements that make this program better than ever. This migration is important to shape up the next generation of Nitrocid that will succeed the API versions v3.0 and v3.1.

We have migrated the main branch of Nitrocid KS to this version of .NET in preparation for the final release, and this main branch tracks this next generation version that will be released early next year. However, this may be too much for the mod authors who aren’t ready to migrate to .NET 10.0 yet.

We feel it, so we’ve decided to create a new version of Nitrocid 0.1.0.x and 0.1.2.x that will upgrade the codebase to .NET 10.0 while fixing test-related bugs and issues along the way. This is to let the mod authors get the time to migrate their mods to .NET 10.0 before we release the next generation Nitrocid KS.

You will be able to take advantage of .NET 10.0 features that are introduced, such as the new C# 14.

The new versions are currently pending release, and we are awaiting the .NET 10.0 packages to land to the Ubuntu 24.04 LTS Noble Numbat or later (#2130891) for the Nitrocid KS Ubuntu PPA, with no estimated timeline as to when. Once they get released, we will release those versions.

#net #net10 #net100 #dotnet #kernelSimulator #ks #nKs #news #nitrocid #nitrocidKs #nks #tech #technology #update

.NET 10.0 LTS and Visual Studio 2026 released!

The fifth Long Term Support (LTS) release for the modern .NET framework, .NET 10.0 has just been released! This release features performance improvements across various areas, feature additions, and many changes that will improve your .NET development experience.

To download this version of .NET, visit the below link by clicking on the buttons shown below:

Download Learn More Release Notes

Not only that, but Visual Studio 2026 has become generally available to the public. Because of this, your development workflow will be improved tremendously due to the new features that it introduces, compared to Visual Studio 2022.

To download Visual Studio 2026, visit the below link by clocking on the buttons shown below:

Download Learn More

Get yourselves excited with the .NET 10.0 release! Download .NET 10.0 by going to the top of the page and clicking on Download to get started!

Visual Studio 18.0 will be shipped with built-in support for .NET 10.0 so that you can use this version of .NET with Visual Studio seamlessly.

#Net #Net10 #Net100 #NETConsoleProject #NetFramework #NetStandard #csharp #VBNET #visualBasic #visualStudio #VisualStudio2026 #vs #VS2026

Get ready for .NET Conf 2025 on November 11th!

As we are approaching to the final release of .NET 10.0, a conference for .NET developers has been finally set to be scheduled for November 11th, and this event lasts three days up to November 13th. This conference talks about what’s new in .NET 10.0 and Visual Studio 2026, where they both introduce new features and improvements to enhance your developer experience.

Joining the conference is free, and you can mark the schedule on your calendar using the below button.

.NET Conf

The below main events will happen in this conference:

  • November 11th (8 AM to 6 PM PST): This is a big day for .NET developers where .NET 10.0 and Visual Studio 2026 will be showcased for new features and improvements, as well as the Code Party that you can win some great prizes.
  • November 12th (9 AM to 5 PM PST): This showcases a deep dive into .NET, Azure, and AI.
  • November 13th (5 AM to 5 PM PST): This is a community event with speakers around the world.

After the main events, there comes two additional days, which are the Student Zone on November 14th that is a beginner-friendly virtual event where experts teach you how to build awesome projects using C# and .NET, and November 13th to 15th where the community events are held.

There will also be giveaways and digital swags where you receive them with many valuable perks, such as digital goods worth over $5,500, like high-value software licenses and other goodies.

The speakers in this conference event will be (in alphabetical order):

  • Allie Barry
  • Brady Gaster
  • Cathy Sullivan
  • Damian Edwards
  • David Fowler
  • Gaurav Seth
  • Maddy Montaquila
  • Mads Kristensen
  • Maria Naggaga Nakanwagi
  • Mike Kistler
  • Rachel King
  • Safia Abdalla
  • Scott Hanselman

Join the .NET Conf for free!

#Net #Net10 #Net100 #NETConf #NETConf2025 #C_ #dotnet #F_ #fsharp #news #Tech #Technology #update #VB

Ubuntu 26.04 Resolute Raccoon will use .NET 10.0!

Ubuntu 26.04 LTS Resolute Raccoon is reportedly to start development in a week after the release of Ubuntu 25.10 Questing Quokka, which was released today. This version of Ubuntu will feature the upcoming .NET 10.0 LTS release which will be supported for up to three years, with the most interesting features being in the final release. With Ubuntu 26.04 LTS about to start development, .NET 10.0 would have been already updated to its second release candidate, a milestone before the final release.

Ubuntu 26.04 LTS is going to be the tenth long term support release, which is a very interesting milestone as we are heading towards years and years of improvements that happened to Ubuntu, starting from 2004 with the Warty Warthog. You can find out more about .NET 10.0 here.

.NET 10.0 is going to be the long-term support release for the modern .NET framework after 8.0, which was released on November 2023. Earlier, .NET 9.0 brought performance improvements, but .NET 10.0 will bring even more improvements across different areas of the framework.

Ubuntu 26.04 LTS will also update more frameworks and toolchains, including GCC, Python, and others, to support the latest features that will make it to the release. This will give developers new features to develop their applications, including the .NET ones, which .NET 10.0 provides.

.NET 10.0 brings improvements to the AOD applications, as well as the AVX10.2 support. It also brings C# 14, which introduces new features, such as unbound generic types support for the nameof expression.

Ubuntu 26.04 LTS Resolute Raccoon will be released on April 2026, while .NET 10.0 will go live on November 2025.

#Net #Net10 #Net100 #2610 #csharp #news #Raccoon #Resolute #ResoluteRaccoon #Tech #Technology #Ubuntu #Ubuntu2604LTSResolute #Ubuntu2604LTSResoluteRaccoon #Ubuntu2604Resolute #Ubuntu2604ResoluteRaccoon #update

Try out the .NET 10.0 Alpha SDK!

.NET 9.0 was released on November 12th, 2024, to provide your applications with brand new features, such as ref struct in interfaces, performance improvements, and bug fixes related to several of the .NET components.

Not so long after, .NET 10.0 alpha builds were spotted in the main installer GitHub repository, which is public. The table shows the platform table with two releases: .NET 9.0 and the upcoming .NET 10.0, which is going to be another LTS release.

The upcoming version of .NET will provide you with several of nice features, as well as performance improvements and bug fixes. This .NET version is to be released on November 2025 to accommodate with the release schedule, as well as its first preview to be scheduled for February 2025.

If you have Visual Studio 17.13 or later (may change across preview releases), you can now try out the Alpha builds of .NET 10.0, which you can find in the above link. Here are the links to .NET 10.0:

Please note that this software is in its alpha state and may contain features that may not make it to the final release. Use with care.

Enjoy!

#Net #Net10 #Net100 #NETConsoleProject #NetCore #NetFramework #NetStandard #azure #C_ #dotnet #runtime #sdk #softwareDevelopment

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst