我昨天安装了Visual Studio。我想看看Visual Studio安装了什么版本的.NET Framework,所以我遵循了this code from Microsoft。 (向下滚动一下代码)。我用'Console App(.NET Core)'打开了一个新的Visual C#项目,并将给定的代码复制到其中。
using System;
using Microsoft.Win32;
public class GetDotNetVersion
{
public static void Main()
{
GetDotNetVersion.Get45PlusFromRegistry();
}
private static void Get45PlusFromRegistry()
{
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{
if (ndpKey != null && ndpKey.GetValue("Release") != null)
{
Console.WriteLine(".NET Framework Version: " + CheckFor45PlusVersion((int)ndpKey.GetValue("Release")));
}
else
{
Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
}
}
}
// Checking the version using >= will enable forward compatibility.
private static string CheckFor45PlusVersion(int releaseKey)
{
if (releaseKey >= 461808)
return "4.7.2 or later";
if (releaseKey >= 461308)
return "4.7.1";
if (releaseKey >= 460798)
return "4.7";
if (releaseKey >= 394802)
return "4.6.2";
if (releaseKey >= 394254)
return "4.6.1";
if (releaseKey >= 393295)
return "4.6";
if (releaseKey >= 379893)
return "4.5.2";
if (releaseKey >= 378675)
return "4.5.1";
if (releaseKey >= 378389)
return "4.5";
// This code should never execute. A non-null release key should mean
// that 4.5 or later is installed.
return "No 4.5 or later version detected";
}
}
// This example displays output like the following:
// .NET Framework Version: 4.6.1
但是,在编辑器中,'RegistryKey'发出错误:“找不到命名空间。”第二行'使用Microsoft.Win32;'是灰色的,好像它没有在代码中被调用。
当我查看Visual Studio中的“解决方案资源管理器”面板时,我可以列出依赖项。我没有看到MicrosoftWin32.dll,但我确实看到了mscorlib.dll。我在某处读到可以在那里找到Microsoft.Win32名称空间的地方吗?
有人可以给我一些线索,如何解决这个问题?我在哪里可以找到Microsoft.Win32命名空间?为什么在这个标准项目中没有它?
答案 0 :(得分:1)
如果您使用netcore,则需要添加软件包Microsoft.Win32.Registry:
您的项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Win32.Registry" Version="4.4.0" />
</ItemGroup>
</Project>
结果: