由于.NET 4和Windows 8或更高版本的平台很难确定运行程序的操作系统版本。如何在c#中获得真正的操作系统版本?
例如,在Windows 10上运行,如果我的项目有一个Windows 8的DLL那么Environment.OSVersion.Version
回报6.2.9200.0
这是Windows 8和非Windows 10
这一行为在这个问题解释(crono的答案):Windows version in c#
所以我的问题是以下几点:我们如何才能确定(并保持在.NET方式,以便能够在非Windows平台上使用它)我们的应用程序的操作系统版本是运行?
链接到MSDN:
https://msdn.microsoft.com/en-us/library/system.environment.osversion(v=vs.110).aspx
我会张贴关于[体现您的应用程序]的答案(https://msdn.microsoft.com/en-us/library/windows/desktop /dn481241%28v=vs.85%29.aspx),这样'Environment.OSVersion.Version'就能返回正确的值(我最近必须这样做才能让我的软件检测Windows 10),但如果您使用的是非Windows平台,我不确定它会对您有所帮助。我做了一些搜索,看来Mono似乎在听'app.manifest'文件时遇到问题。 –
这就是我发现的问题。但是,如果有一个Windows 10.1或甚至11个程序,为了让他的应用程序正确检测到该版本,该程序需要重新编译该程序。而且,考虑到应用的生命周期,仅仅因为OsVersion返回每个清单允许的最后一个版本,在以前的版本中考虑在这种Windows中运行旧版应用可能是错误的。不知道我是否清楚...微软的这个决定是相当令人不安的...... –