[英]How can I determine if the .Net 5 runtime is installed?
我安裝了 .NET 5.0 預覽版 SDK 和運行時。
如何檢測/確定是否從 C# 中安裝了 .Net 5 運行時?
這里有一些問題:
由於 .NET 5 是 .NET Core 的下一個版本,您可以輕松使用新的(在 Core 3.0 中)API
var netVersion = System.Environment.Version;
var runtimeVer = System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription;
正如您在原始問題中提到的,您正在閱讀獲取 .NET 框架版本的注冊表項(我假設是這樣)。 那么,指定安裝的 .NET 核心版本的鍵的位置位於不同的位置,即HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions
。 以下是您如何閱讀它們:
const string subkey = @"SOFTWARE\dotnet\Setup\InstalledVersions";
var baseKey = Registry.LocalMachine.OpenSubKey(subkey);
if (baseKey.SubKeyCount == 0)
return;
foreach (var platformKey in baseKey.GetSubKeyNames())
{
using (var platform = baseKey.OpenSubKey(platformKey))
{
Console.WriteLine($"Platform: {platform.Name.Substring(platform.Name.LastIndexOf("\\") + 1)}");
if (platform.SubKeyCount == 0)
continue;
var sharedHost = platform.OpenSubKey("sharedhost");
foreach (var version in sharedHost.GetValueNames())
Console.WriteLine("{0,-8}: {1}", version, sharedHost.GetValue(version));
}
}
* 如果你編譯你的應用程序,它會將運行時與你self-contained
應用程序捆綁在一起
不要使用公認的答案。 .NET 5 Core 不再將任何內容保存到注冊表中。 我安裝了 .NET 5 並且在SOFTWARE\dotnet
的注冊表中沒有任何內容。
此外, RutimeEnvironment
和類似的基於環境的檢查將顯示捆綁了框架的“自包含”應用程序的無效結果。
檢查版本的記錄方法是啟動dotnet --info
或dotnet --list-runtimes
並檢查結果。 有一百萬種方法可以啟動控制台命令並檢查 output。
我正在為 dotnet 產品制作安裝程序,我的先決條件之一是安裝 dotnet 5.nn 運行時。 我正在幾個虛擬機中測試所有場景,這就是我發現的不一致之處。
在 VM 上,我第一次開始測試時,根本沒有 MS-NET 產品,因此通過注冊表項 (HKLM/software/dotnet/...) 很容易確定此運行時缺失。 但是,當我安裝運行時然后卸載它時,注冊表項沒有被刪除(順便在另一個VM上刪除了),所以通過注冊表項檢查dotnet運行時返回true,但實際上沒有安裝運行時在機器中,我確實在一分鍾前將其卸載。 這是我的第一張支票。
那么,我接下來做了什么(第二次檢查)? 我確實檢查了文件系統中的 dotnet 物理存在。 這將是 C:\Program Files\dotnet\shared 或 C:\Program Files (x86)\dotnet\shared 位置,基於 32/64 位安裝。 請注意,這些文件夾可能包含一個或多個子文件夾,我感興趣的是這個:Microsoft.NETCore.App -> 持有核心 + 而不是 5.nn 運行時...
第三次檢查是運行時的注冊表安裝/卸載鍵:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{guid}
截至 2021 年 9 月 24 日:我需要找出安裝的 Net 5 版本。 我將我的 MS VS 更新到了最新版本,然后創建了簡單的 console.Net 5 應用程序並從 RuntimeInformation.FrameworkDescription 中獲得了價值。 它是“.NET 5.0.10”
打開視覺工作室代碼。
從菜單啟動終端
在終端 window 中鍵入以下命令並讀取版本。
dotnet--版本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.