咱們都知道在C#中能夠經過Environment.OSVersion來判斷當前操做系統,下面是操做系統和主次版本的對應關係:app
操做系統 | 主版本.次版本 |
Windows 10 | 10.0* |
Windows Server 2016 Technical Preview | 10.0* |
Windows 8.1 | 6.3* |
Windows Server 2012 R2 | 6.3* |
Windows 8 | 6.2 |
Windows Server 2012 | 6.2 |
Windows 7 | 6.1 |
Windows Server 2008 R2 | 6.1 |
Windows Server 2008 | 6 |
Windows Vista | 6 |
Windows Server 2003 R2 | 5.2 |
Windows Server 2003 | 5.2 |
Windows XP 64-Bit Edition | 5.2 |
Windows XP | 5.1 |
Windows 2000 | 5 |
圖標轉自(https://msdn.microsoft.com/en-us/library/ms724832(v=vs.85).aspx)函數
可是,當你在win10操做系統上使用這個函數是會獲得這樣的結果:6.2.9200.0,而不是咱們期待的10.0.***,這是爲何?值得咱們注意的是,在這個表格下面有這樣的小字:spa
* For applications that have been manifested for Windows 8.1 or Windows 10. Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). To manifest your applications for Windows 8.1 or Windows 10, refer to Targeting your application for Windows.操作系統
也就是說返回6.2就是win8以上操做系統的默認狀況。要返回10.0就要作特殊處理。MSDN原文方法在這裏https://msdn.microsoft.com/en-us/library/dn481241(v=vs.85).aspxblog
解決方法:爲項目新建並指定「應用程序清單文件」,而後把下面的註釋去掉,就能夠返回10.0.***了 ci