我安装了 .NET 5.0 预览版 SDK 和运行时。
如何检测/确定 .Net 5 运行时是否是从 C# 安装的?
这里有一些错误:
- .NET 5 是not.NET Framework 的一个版本,它是下一个版本.NET核心 (source https://devblogs.microsoft.com/dotnet/introducing-net-5/)
- 如果您的应用程序是针对 .NET 5 编译的,并且您尝试运行的计算机没有安装 .NET 5,那么您的应用程序根本无法启动(可以将其想象为尝试运行为 .NET 编译的应用程序)仅安装 .NET Framework 3.5 的计算机上的 Framework 4.8)*
由于 .NET 5 是 .NET Core 的下一个版本,您可以轻松使用新的(在 Core 3.0 中)API
var netVersion = System.Environment.Version;
var runtimeVer = System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription;
正如您最初的问题中所提到的,您正在阅读注册表项以获取 .NET Framework 版本(我假设so https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed)。那么指定安装的 .NET Core 版本的密钥位置位于不同的位置,即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
它将运行时与您的应用程序捆绑在一起
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)