這禮拜third-party提供了新的dll參考元件更新,沒預料是最新的.NET 4.6版本,但原本負責系統提供給客戶的工具是.NET 4.0,沒辦法引用客戶採購的元件,因此需要把工具重新用4.6編譯。
佈署前,生產環境也是需要確認,從msdn及google找到幾種取得機器上的.NET Framework有4個方式,今天先筆記3種,下一篇筆記用.NET程式的作法。
- registry query
- Registry GUI
- PowerShell command(Get-ChildItem)
以下資訊適用.NET 4以後的版本喔!
1.開啟命令提示字元執行以下registry query命令,就可以知道目前server 所安裝的.NET Framework Full版本是哪一個?
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\full" /v version
2. Registry GUI查詢
a.開始功能表輸入Regedit
b.開啟登入編輯程式(Regedit)後,在編輯頁簽尋找 NET Framework Setup
c.找到目錄後進入 \NDP\v4\Full ,找到Release,後方鍵值資料中的十進位(394271)就是.NET版本號
d最後到msdn可以發現幾個常見的版本鍵值Release DWORD)
Value of the Release DWORD |
Version |
378389 |
.NET Framework 4.5 |
378675 |
.NET Framework 4.5.1 installed with Windows 8.1 or Windows Server 2012 R2 |
378758 |
.NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2 |
379893 |
.NET Framework 4.5.2 |
On Windows 10 systems: 393295 On all other OS versions: 393297 |
.NET Framework 4.6 |
On Windows 10 November Update systems: 394254 On all other OS versions: 394271 |
.NET Framework 4.6.1 |
On Windows 10 Insider Preview Build 14295: 394747 On all other OS versions: 394748 |
.NET Framework 4.6.2 Preview |
https://msdn.microsoft.com/en-us/library/hh925568#net_b
3.最後一種PowerShell command,也是今天的重頭戲。
開啟powershell ,並執行以下script
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!1)'} |
Select PSChildName, Version, Release
a.Script以遞迴的方式取得NDP目錄下的資訊
b.取得屬性(itemProperty)、名稱(name)及版號(Release)
c.排除1打頭的資訊(1028、1033)
d.取出資料
(連wcf、wpf都取出來了)
小結:
技術的世界日新月異,早上划龍舟手很酸,晚一點再來筆記用C#(Microsoft.Win32)取資訊。
參考:
https://technet.microsoft.com/en-us/library/cc742028(v=ws.11).aspx
https://msdn.microsoft.com/en-us/library/hh925568#net_b
http://stackoverflow.com/questions/1565434/how-to-find-the-net-version