Getting Started with .NET 10 on Ubuntu 26.04 (Resolute Raccoon)
By • min read
<h2 id="overview">Overview</h2>
<p>Ubuntu 26.04 LTS (Resolute Raccoon) has arrived, and with it comes native support for .NET 10 LTS. This release marks another milestone in the collaboration between Canonical and Microsoft, ensuring that .NET developers have a first-class experience on Ubuntu. .NET 10 is included directly in the Ubuntu repositories, making installation as simple as a single <code>apt</code> command. Additionally, you can still run .NET 8 and .NET 9 using a separate PPA feed.</p><figure style="margin:20px 0"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2026/04/whats-new-for-dotnet-in-ubuntu-2604.webp" alt="Getting Started with .NET 10 on Ubuntu 26.04 (Resolute Raccoon)" style="width:100%;height:auto;border-radius:8px" loading="lazy"><figcaption style="font-size:12px;color:#666;margin-top:5px">Source: devblogs.microsoft.com</figcaption></figure>
<p>This guide walks you through everything you need to know — from installing the SDK to running your first C# app, using container images, and avoiding common pitfalls. Whether you're setting up a development environment or preparing production containers, this tutorial covers the essential steps.</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>Before you begin, ensure you have the following:</p>
<ul>
<li>A machine or virtual machine running Ubuntu 26.04 (Resolute Raccoon) — both desktop and server editions work.</li>
<li><strong>sudo</strong> privileges to install packages.</li>
<li>Basic familiarity with the command line and package management.</li>
<li>Optional: Docker installed if you plan to use container images (recommended for testing).</li>
</ul>
<p>If you're using an Ubuntu container, you'll need a host with Docker or another container runtime. The examples below assume a standard Ubuntu 26.04 environment.</p>
<h2 id="step-by-step-instructions">Step-by-Step Instructions</h2>
<h3 id="install-dotnet-10-sdk">1. Install .NET 10 SDK</h3>
<p>The .NET 10 SDK is available in the official Ubuntu repositories. Open a terminal and run the following commands:</p>
<pre><code>sudo apt update
sudo apt install dotnet-sdk-10.0</code></pre>
<p>This installs the latest stable .NET 10 SDK along with the runtime and ASP.NET Core components.</p>
<h3 id="verify-installation">2. Verify the Installation</h3>
<p>Check that the SDK was installed correctly by displaying the version:</p>
<pre><code>dotnet --version</code></pre>
<p>You should see output similar to <code>10.0.105</code>. This confirms that the .NET CLI is ready to use.</p>
<h3 id="run-your-first-csharp-program">3. Run Your First C# Program</h3>
<p>Use a heredoc to quickly test .NET without creating a project folder. The following command creates a temporary application and runs it directly:</p>
<pre><code>dotnet run - << 'EOF'
using System.Runtime.InteropServices;
Console.WriteLine($"Hello {RuntimeInformation.OSDescription} from .NET {RuntimeInformation.FrameworkDescription}");
EOF</code></pre>
<p>Expected output (OS description may vary):</p>
<pre><code>Hello Ubuntu Resolute Raccoon (development branch) from .NET .NET 10.0.5</code></pre>
<p>This method is a convenient way to test snippets or provide quick demonstrations — AI agents and scripters often use similar patterns in Python, but now you can do it with C# too.</p>
<h3 id="install-additional-dotnet-versions">4. Install .NET 8 or .NET 9 (Optional)</h3>
<p>If your project requires an older LTS or current release, you can install .NET 8 or .NET 9 via the <strong>dotnet-sdk-8.0</strong> or <strong>dotnet-sdk-9.0</strong> packages respectively. These are provided through a separate PPA/feed maintained by Microsoft. Add the feed and install:</p>
<pre><code>sudo apt update
sudo apt install dotnet-sdk-8.0 # for .NET 8 LTS
sudo apt install dotnet-sdk-9.0 # for .NET 9 (current)</code></pre>
<p>Note that .NET 8 is a long-term support release, while .NET 9 is a standard term release. .NET 10 is the primary LTS for Ubuntu 26.04.</p>
<h3 id="use-dotnet-container-images">5. Use .NET Container Images</h3>
<p>Ubuntu 26.04 container images are available for .NET 10 and later versions. They use the <strong>resolute</strong> tag (e.g., <code>ubuntu/resolute</code>). To test inside a container:</p><figure style="margin:20px 0"><img src="https://uhf.microsoft.com/images/microsoft/RE1Mu3b.png" alt="Getting Started with .NET 10 on Ubuntu 26.04 (Resolute Raccoon)" style="width:100%;height:auto;border-radius:8px" loading="lazy"><figcaption style="font-size:12px;color:#666;margin-top:5px">Source: devblogs.microsoft.com</figcaption></figure>
<pre><code>docker run --rm -it ubuntu:resolute
# Inside container:
apt update
apt install -y dotnet-sdk-10.0
dotnet --version</code></pre>
<p>If you were previously using <strong>noble</strong> (Ubuntu 24.04) images, simply change the tag from <code>-noble</code> to <code>-resolute</code> to upgrade the base OS. Note that containers share the host kernel, so a 26.04 container running on a 24.04 host will still use a 6.x Linux kernel.</p>
<p>All existing image flavors (including Chiseled) remain available. For a full example, you can adapt the <a href="https://github.com/dotnet/dotnet-docker/blob/main/samples/README.md" target="_blank">aspnetapp sample</a> to use the <code>resolute</code> base image.</p>
<h2 id="common-mistakes">Common Mistakes</h2>
<h3>Forgetting to run <code>apt update</code></h3>
<p>If you skip <code>sudo apt update</code> before installing the SDK, you may get a package not found error or an outdated version. Always refresh the package index first.</p>
<h3>Mixing package names</h3>
<p>The correct package for .NET 10 is <code>dotnet-sdk-10.0</code>. Using <code>dotnet-sdk-10</code> or <code>dotnet-10-sdk</code> will fail. Similarly, .NET 8 uses <code>dotnet-sdk-8.0</code> (not 8 alone).</p>
<h3>Assuming cgroup v1 works</h3>
<p>Ubuntu 26.04 has removed cgroup v1. .NET has supported cgroup v2 for years, so this should be transparent. However, if you have custom tooling or legacy containers that rely on cgroup v1, you may encounter issues. Verify your container runtime supports cgroup v2.</p>
<h3>Container kernel mismatch</h3>
<p>Running a 26.04 container on an older host (e.g., 24.04) means the container uses the host's kernel. Some features like Linux 7.0 (available in 26.04) won't be available until the host is also upgraded. This is expected and not a bug.</p>
<h3>Ignoring the PPA for older versions</h3>
<p>.NET 8 and .NET 9 are not in the default Ubuntu 26.04 repositories. You must add the Microsoft package feed (it's included automatically when you install the SDK from the repo, but for explicit installation you may need to follow Microsoft's instructions).</p>
<h2 id="summary">Summary</h2>
<p>Ubuntu 26.04 (Resolute Raccoon) brings a seamless experience for .NET developers. With .NET 10 available directly from the package manager, you can get started in minutes. The release also introduces Linux 7.0 (pending validation), post-quantum cryptography support in .NET 10, and the removal of cgroup v1 — all of which are handled gracefully by modern .NET runtimes. Container images are ready for use with a simple tag change. By following this guide, you can install the SDK, run your first code, and avoid common setup errors. Happy coding on the latest Ubuntu LTS!</p>