{"id":49353,"date":"2025-07-25T14:45:45","date_gmt":"2025-07-25T14:45:45","guid":{"rendered":"https:\/\/ubuntuhandbook.org\/?p=49353"},"modified":"2025-07-25T14:45:45","modified_gmt":"2025-07-25T14:45:45","slug":"install-net-10-ubuntu-ppa","status":"publish","type":"post","link":"https:\/\/ubuntuhandbook.org\/index.php\/2025\/07\/install-net-10-ubuntu-ppa\/","title":{"rendered":"Install .NET 10 (Preview) in Ubuntu via PPA"},"content":{"rendered":"<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/dotnet-icon.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-44743\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/dotnet-icon-250x250.webp\" alt=\"\" width=\"250\" height=\"250\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/dotnet-icon-250x250.webp 250w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/dotnet-icon-300x300.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/dotnet-icon-600x600.webp 600w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/dotnet-icon-768x768.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/dotnet-icon.webp 1200w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/p>\n<p>For testing purpose, Microsoft .NET 10 (preview version so far) is available to install in Ubuntu 22.04, Ubuntu 24.04, and 25.04 through PPA.<\/p>\n<p>.NET 10 is the next LTS (Long Term Support) release with 3 years of support. It&#8217;s so far in preview development stage, while the full release is expected in November 2025.<\/p>\n<p><!--more--><\/p>\n<h3>What&#8217;s New in .NET 10<\/h3>\n<p>.NET 10 introduces significant enhancements to the JIT compiler. It improved code generation by placing struct members in registers rather than on the stack, eliminating memory accesses, and expanded devirtualize method calls to cover array interface methods.<\/p>\n<p>It as well improved JIT inlining, method devirtualization, and stack allocations, AVX10.2 support. And, nativeAOT&#8217;s type preinitializer now supports all variants of the <code>conv.*<\/code> and <code>neg<\/code> opcodes.<\/p>\n<p>The .NET 10 libraries introduced new APIs in cryptography, globalization, numerics, serialization, collections, diagnostics, and when working with ZIP files.<\/p>\n<p>It also added new JSON serialization options, and Windows Cryptography API: Next Generation (CNG) support for Post-Quantum Cryptography (PQC).<\/p>\n<p>For the SDK, it introduced new dnx tool execution script and added support for Microsoft.Testing.Platform in <code>dotnet test<\/code>, platform-specific .NET tools, one-shot tool execution with <code>dotnet tool exec<\/code>, and CLI introspection with <code>--cli-schema<\/code>.<\/p>\n<p>Other changes include Blazor WebAssembly preloading, automatic memory pool eviction, enhanced form validation, and passkey support for Identity in ASP.NET Core 10.0.<\/p>\n<p>And, there are new features and enhancements to C# 14, F#, Visual Basic, .NET MAUI, and more. For details about the release, see the official <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/core\/whats-new\/dotnet-10\/overview\" target=\"_blank\" rel=\"noopener\">what&#8217;s new<\/a> page.<\/p>\n<h3>Install .NET 10 Preview from PPA<\/h3>\n<p>Microsoft provides official .NET 10 preview packages for Linux, Window, and macOS. They are available to download at <a href=\"https:\/\/dotnet.microsoft.com\/en-us\/download\/dotnet\/10.0\" target=\"_blank\" rel=\"noopener\">this page<\/a>.<\/p>\n<p>For Linux, they are portable tarballs that contain all the executable and run-time libraries that can be run directly from terminal.<\/p>\n<div id=\"attachment_49354\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet10-portable.webp\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-49354\" class=\"size-large wp-image-49354\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet10-portable-700x395.webp\" alt=\"\" width=\"610\" height=\"344\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet10-portable-700x395.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet10-portable-300x169.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet10-portable-768x434.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet10-portable-1536x867.webp 1536w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet10-portable-1320x745.webp 1320w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet10-portable.webp 1817w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><p id=\"caption-attachment-49354\" class=\"wp-caption-text\">dotnet 10 portable tarball<\/p><\/div>\n<p>For those who prefer native .deb package, Ubuntu Team maintains a <a href=\"https:\/\/launchpad.net\/~dotnet\/+archive\/ubuntu\/previews\" target=\"_blank\" rel=\"noopener\">PPA repository<\/a> that contains the .NET 10 preview for all current Ubuntu releases on <code>amd64<\/code>, <code>arm64<\/code>, <code>ppc64el<\/code>, and <code>s390x<\/code> platforms.<\/p>\n<p><b>To add the PPA<\/b>, press <code>Ctrl+Alt+T<\/code> on keyboard to open terminal and run command:<\/p>\n<pre>sudo add-apt-repository ppa:dotnet\/previews<\/pre>\n<p><i>Type user password (no asterisk feedback) when it asks and hit Enter to continue.<\/i><\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-preview-ppa.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-49355\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-preview-ppa.webp\" alt=\"\" width=\"690\" height=\"461\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-preview-ppa.webp 690w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-preview-ppa-300x200.webp 300w\" sizes=\"auto, (max-width: 690px) 100vw, 690px\" \/><\/a><\/p>\n<p><b>Next, install .NET deb package<\/b> by running command:<\/p>\n<pre>sudo apt install dotnet10<\/pre>\n<p><i>For Linux Mint, you need to run <code>sudo apt update<\/code> first to refresh package cache.<\/i><\/p>\n<p>This command will install both the SDK and run-times, while you may replace <code>dotnet10<\/code> with <code>dotnet-sdk-10.0<\/code>, <code>aspnetcore-runtime-10.0<\/code>, or <code>dotnet-runtime-10.0<\/code> to install only the sdk or runtime as you prefer.<\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/apt-dotnet10.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49356\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/apt-dotnet10-700x506.webp\" alt=\"\" width=\"610\" height=\"441\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/apt-dotnet10-700x506.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/apt-dotnet10-300x217.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/apt-dotnet10.webp 738w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p>If you also have .NET 8 or 9 installed on your system, then you have multiple SDK or run-times. To check them, use command:<\/p>\n<pre>dotnet --list-runtimes &amp;&amp; dotnet --list-sdks<\/pre>\n<p>Then you may choose a runtime via <code>dotnet -r &lt;RUNTIME_IDENTIFIER&gt;<\/code> or select SDK by using <code>global.json<\/code> file.<\/p>\n<pre>{\r\n      \"sdk\": {\r\n        \"version\": \"8.0.108\"\r\n      }\r\n    }<\/pre>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-list.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49357\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-list-700x330.webp\" alt=\"\" width=\"610\" height=\"288\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-list-700x330.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-list-300x141.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/07\/dotnet-list.webp 722w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<h3>Uninstall:<\/h3>\n<p>To uninstall .NET 10 package installed from PPA, use command (Ctrl+Alt+T):<\/p>\n<pre>sudo apt remove --autoremove dotnet10 aspnetcore-runtime-10.0 dotnet-runtime-10.0 dotnet-sdk-10.0<\/pre>\n<p>Then, remove the PPA repository either by &#8220;Software &amp; Updates&#8221; utility under &#8220;Other Software&#8221; tab, or by running command below in terminal:<\/p>\n<pre>sudo add-apt-repository --remove ppa:dotnet\/previews<\/pre>\n<p>For Linux Mint, either use <code>Software Sources<\/code> to remove PPA, or run <code>sudo apt update<\/code> afterward to refresh cache.<\/p>","protected":false},"excerpt":{"rendered":"<p>For testing purpose, Microsoft .NET 10 (preview version so far) is available to install in Ubuntu 22.04, Ubuntu 24.04, and 25.04 through PPA. .NET 10 is the next LTS (Long Term Support) release with 3 years of support. It&#8217;s so far in preview development stage, while the full release is expected in November 2025.<\/p>\n","protected":false},"author":1,"featured_media":44743,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[2090,2086],"class_list":["post-49353","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","tag-microsoft","tag-programming"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/49353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/comments?post=49353"}],"version-history":[{"count":0,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/49353\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media\/44743"}],"wp:attachment":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media?parent=49353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/categories?post=49353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/tags?post=49353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}