似乎是一个简单的问题,但Google似乎没有给我一个答案。
在.NET Framework中,我们可以使用Environment.SystemDirectory
来获取系统目录(看起来像C:\WINDOWS\System32
),但是当前版本的.NET Standard或者该属性不存在。 NET核心。有没有办法在.NET标准(或失败的.NET Core)库中获取该文件夹?
出于我的目的,不要求调用在非Windows平台上返回有用的东西(无论如何它会返回什么?/lib
?/usr/lib
?等等),尽管我猜它会如果它真的很酷。
现在似乎我最好的选择是尝试直接使用C:\WINDOWS\System32
,如果不存在,那么尝试使用C:\WinNT\System32
,但感觉就像这样做了那样。
答案 0 :(得分:5)
.Net Core 2.0 (and .Net Standard 2.0) will contain Environment.SystemDirectory
,但目前的1.x版本没有。
虽然该属性仍然以internal
的形式存在,但如果您愿意依赖非公开代码,则可以使用反射来访问它:
using System;
using System.Reflection;
using static System.Reflection.BindingFlags;
…
var systemDirectory = typeof(Environment).GetProperty("SystemDirectory", NonPublic | Static)
.GetValue(null, null);
在运行.Net Core 1.1.1的.Net Core SDK 1.0的Windows 10计算机上,返回C:\WINDOWS\system32
。在Ubuntu 16.04上运行相同的代码会生成NullReferenceException
。