安裝 .NET Framework的技巧以及探究路徑
禁止轉載。
禁止轉載是指「禁止轉載本文內容」,可以通過超鏈接的方式分享本文。
本文章內容由我在該問題下的回答總結而來:
https://www.zhihu.com/question/19786618
本文會持續更新。
再說一遍:
當你自己沒法解決的時候,請求助於身邊有空的、懂電腦的人。
還有:
一般情況下,程序/系統讓你重啟,就不要忽略掉,保存工作,趕緊重啟!
目錄
- 我需要安裝哪些版本的 .NET Framework
- 我該如何安裝 .NET Framework
- .NET Framework 版本和依賴關係
- .NET Framework 系統需求
- 安裝 .NET Framework
- .Net Framework 4.X相關
- .Net Framework 4.7相關
- * 在Windows 8、8.1、10上安裝 .NET Framework 3.5
- * 關於錯誤0x800F081F/0x800F0906/0x800F0907
- * 錯誤0x800F081F/0x800F0906/0x800F0907的異常處理
- * 其他
標*的表示該部分內容有難度,或者閱讀體驗差。
我需要安裝哪些版本的 .NET Framework
- Windows 10 1709 內置4.7.1,安裝 3.5;
- Windows 10 1703 內置4.7,安裝 3.5、4.7.1;
- Windows 10 1607 內置4.6.2,安裝 3.5、4.7.1;
- Windows 10 1511 內置4.6.1,安裝 3.5、4.7;
- Windows 10 1507 內置4.6,安裝 3.5、4.7;
- Windows 8.1 內置4.5,安裝 3.5、4.7.1;
- Windows 8 內置4.5,安裝 3.5、4.6.1;
- * Windows 7 SP1 內置3.5.1,安裝 4.7.1;
- ** Windows XP 沒有內置 .NET Framework,安裝 3.5、4.0。
*:Windows 7 不是SP1請儘快進行升級,參考:https://support.microsoft.com/zh-cn/help/15090/windows-7-install-service-pack-1-sp1
**:除非必要,不建議繼續使用Windows XP
注意:對於 .NET Framework 4.X,如果上述的某版本無法在你的系統上安裝,請繼續嘗試較低的版本,直到安裝成功,或者版本號到達4.0。如果一直都沒有安裝成功,請重裝系統。
我該如何安裝 .NET Framework
- 對於 .NET Framework 4.X
請參考「獲取 .Net Framework」部分。
- 對於 .NET Framework 3.5
請參考「在Windows 8、8.1、10上安裝 .NET Framework 3.5」部分的
「在控制面板中啟用 .NET Framework 3.5」小節。
.NET Framework 版本和依賴關係
https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/versions-and-dependencies
...
每個新版本的 .NET Framework 都會保留早期版本中的功能並會添加新功能。 CLR 由其自己的版本號標識。 雖然 CLR 版本並不總是遞增的,但 .NET Framework 版本號在每次發布時都會遞增。 例如,.NET Framework 4、4.5 和更高版本包含 CLR 4,而 .NET Framework 2.0、3.0 和 3.5 包含 CLR 2.0。 (沒有版本 3 的 CLR。)
CLR - Common Language Runtime - https://docs.microsoft.com/zh-cn/dotnet/standard/clr
.NET Framework 系統需求
https://docs.microsoft.com/zh-cn/dotnet/framework/get-started/system-requirements
注意:4.7.1已發布,上邊鏈接的中文版本頁面和上邊的表格還未更新。
安裝 .NET Framework
https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers
單擊「4.7 離線安裝程序下載頁」以下載離線安裝包,或直接訪問https://www.microsoft.com/zh-cn/download/details.aspx?id=55167
注意:4.7.1已發布,上邊鏈接的中文版本頁面還未更新。
.Net Framework 4.X相關
當你運行的程序需要 .NET Framework 4.0及以上版本的環境,但當前系統中並沒有時,會報錯:
請參考「獲取 .Net Framework」部分。
.Net Framework 4.7相關
由於在Windows 7 SP1、2008 R2 SP1、2012中可能缺少D3DCompiler_47.dll,從而導致4.7安裝失敗:
解決方法:打上對應操作系統版本的KB4019990;
詳細信息:https://support.microsoft.com/en-us/help/4020302
打上補丁後:
另外,在Windows 7 SP1上安裝4.7時最好保證你的系統有一個穩定的Internet連接,不然可能會遇到錯誤:
相關參考:http://technet.microsoft.com/zh-cn/library/dn265983.aspx
提示:打KB2677070和KB2813430沒用,聯網重裝就行了。
* 在Windows 8、8.1、10上安裝 .NET Framework 3.5
https://msdn.microsoft.com/zh-cn/library/hh506443.aspx
...
一般情況下,請勿卸載計算機上的任何 .NET Framework 版本。 不同的應用程序依賴於不同的 Framework 版本,並且一台計算機上可以同時載入多個版本的 NET Framework。 針對版本 2.0 和 3.0 構建的應用程序也可以使用 .NET Framework 3.5。 在安裝 .NET Framework 3.5 之前安裝 Windows 語言包可能會導致 .NET Framework 3.5 安裝失敗。 在安裝任何 Windows 語言包之前,請安裝 .NET Framework 3.5。...由於安裝 .NET Framework 3.5 所必須採用的方法十分複雜,很遺憾不能提供可以獨立於 Windows 更新運行的單獨的獨立安裝程序。 再次強調,如果其他所有方法都失敗,則如之前所述,必須使用安裝媒體。
如果沒出錯的話,其實也不是很複雜啦。
注意:MD5為D481CDA2625D9DD2731A00F482484D86、大小為231MB的「dotnetfx35.exe」並不是 .NET Framework 3.5的離線安裝包。
在控制面板中啟用 .NET Framework 3.5
- 注意:要保證你的系統有一個穩定的Internet連接;
- 按Win+X,單擊「程序和功能」-「啟用或關閉Windows功能」;
- * Windows 10 1703及以上版本:按Win+X,單擊「程序和功能」-「啟用或關閉Windows功能」;
- * 或者直接按Win+R,輸入「OptionalFeatures.exe」,單擊「確定」;
- 把「.NET Framework 3.5 (包括 .NET 2.0 和 3.0)」前邊的框點成「填充」的(並不是打勾,因為子項目不用勾選);
- 單擊「確定」;
- 單擊「從Windows更新下載文件」;
- 完成後單擊「關閉」。
按需安裝 .NET Framework 3.5
- 注意:要保證你的系統有一個穩定的Internet連接;
- 當你運行的程序需要 .NET Framework 3.5的環境,但當前系統中並沒有時,會有提示讓你安裝,所以點擊「安裝此功能」,安裝完成後重新運行剛才的程序就行了:
使用系統鏡像安裝 .NET Framework 3.5(高級)
- 如果你無法連接到Internet,或是下載進度長時間停止不前,再或者是在前述的步驟中遇到了錯誤,你可以嘗試使用對應操作系統版本的鏡像文件來安裝 .NET Framework 3.5(在全新安裝完系統後就該立刻做這項工作):
- 雙擊或右鍵鏡像文件,選擇「掛載」(或執行explorer *.iso),或解壓鏡像文件,找到sourcessxs目錄;
- 按Win+X,單擊「命令提示符(管理員)」/「Windows PowerShell(管理員)」,在命令行界面下輸入以下命令,等待完成即可:
- * 假設「X:sourcessxs」是你鏡像里sources目錄下sxs文件夾的路徑,注意符號;
dism /online /enable-feature /featurename:netfx3 /source:"X:sourcessxs" /LimitAccess
- 下圖是在Windows 8.1 with Update中進行的安裝(使用Shift+F10調出cmd):
* 關於錯誤0x800F081F/0x800F0906/0x800F0907
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/net-framework-35-deployment-errors-and-resolution-steps
0x800F081F CBS_E_SOURCE_MISSING
找不到源文件
0x800F0906 CBS_E_DOWNLOAD_FAILURE 文件下載失敗,或是組策略設置出錯0x800F0907 CBS_E_GROUPPOLICY_DISALLOWED 組策略設置禁止(極少出現)
注意:經測試,以上錯誤均不能通過Microsoft .NET Framework Repair Tool工具進行修復。
- Microsoft .NET Framework Repair Tool is available(英文網頁)
https://support.microsoft.com/en-us/help/2698555
該工具會重置Windows Installer服務,並在需要時連接Internet下載 .NET Framework進行安裝。但遺憾的是,該工具並不能對高於Windows 7 SP1/Server 2008 R2 SP1的系統進行有效修復,也不能重新安裝3.5,所以暫時是沒有任何作用的。
* 錯誤0x800F081F/0x800F0906/0x800F0907的異常處理
https://support.microsoft.com/zh-cn/help/2734782/net-framework-3-5-installation-error-0x800f0906--0x800f081f--0x800f09
終極的解決方法:重裝系統。
以下是我自已測試過的情況:
- 0x800F0906
- 由於未連接到Internet或用戶中斷了下載過程而出錯。解決方法:讓你的系統聯網且不要手動中斷,覺得下載慢或者網路不好的話請參閱本文「使用系統鏡像安裝 .NET Framework 3.5」部分;
- 在Windows 8/8.1,使用系統鏡像安裝3.5時,沒有使用「/LimitAccess」參數,由於指定的源路徑有誤,且Windows Update出錯或未連接到Internet而出錯;
- 由於組策略設置出錯而出錯(與0x800F0907有所不同)。
- 0x800F0907
- 組策略設置禁止。解決方法:組策略(gpedit.msc) - 計算機配置 - 管理模板 - 系統 - 制定可選組件安裝和組件修復的設置,改為「未配置」或「已禁用」。
- 0x800F081F
- 使用系統鏡像安裝3.5時,使用了「/LimitAccess」參數,由於指定的源路徑有誤而出錯;
- 在Windows 10,使用系統鏡像安裝3.5時,沒有使用「/LimitAccess」參數,由於指定的源路徑有誤,且Windows Update出錯或未連接到Internet而出錯;
- 在出現過一次0x800F081F後,若指定的源路徑不變,無論此時源路徑是否正確,都會持續出現該錯誤。解決方法:重啟系統(註銷沒用)。
* 「指定的源路徑有誤」包括但不限於:路徑輸入錯誤、64位系統指定了32位鏡像的源(反過來同樣)、源路徑所屬鏡像所包含系統的版本號與當前系統的不等(參考:Operating System Version );
* 「Windows Update出錯」的解決方法:https://support.microsoft.com/zh-cn/help/10164
- 0x800F081F/0x800F0906
https://support.microsoft.com/zh-cn/help/3005628
http://grylewicz.pl/wlaczanie-funkcji-net-3-5-i-blad-0x800f081f-w-windows-8-1/
在沒有其他問題的情況下,給從未安裝過 .NET Framework 3.5的Windows 8/Server 2012或Windows 8.1/Server 2012 R2打KB2966827或KB2966828後,第一次嘗試安裝3.5時可能會出錯:
解決方法:打上對應操作系統版本的KB3005628;
提示:KB3005628的作用是刪除KB2966827或KB2966828;從http://go.microsoft.com/fwlink/?linkid=513775與http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/10/ndpfixit-kb3005628-x64_deabb35b397a39d1d46e1d8aab99bf66fc40052c.exe下載的「ndpfixit-kb3005628-*.exe」文件不一樣,前者運行時會彈出命令行界面,後者沒有任何窗口,但看上去兩者功能是相同的;兩種「ndpfixit-kb3005628-*.exe」運行後都沒有任何提示,要等一段時間才能發現KB2966827或KB2966828被刪除了;而且都需要以管理員身份運行,不然沒有任何效果。
[以下內容請勿引作參考]
http://winitpro.ru/index.php/2014/10/28/oshibka-0x800f081f-pri-ustanovke-net-framework-3-5-v-windows-8-server-2012/
語言包問題導致 .Net Framework 3.5安裝失敗。
[以上內容請勿引作參考]
* 其他
- 在Windows 8上即使打了Windows8-RT-KB4019990-x64.msu,也不能安裝4.7:
- 在Microsoft官方文檔中Windows 8最高並不支持4.6.2,但實測可以安裝:
(穩定性未知,而且我竟然忘了是怎麼裝的了)
- 在Microsoft官方文檔中Windows Vista SP2最高並不支持4.6.1,但實測可以安裝:
(穩定性未知)
- 在Microsoft官方文檔中Windows Vista最高並不支持4.7,經 @Rayista 測試可以安裝:
(穩定性未知;需要解壓安裝程序,運行netfx_Full_x86.exe或netfx_Full_x64.exe安裝)
- 在Microsoft官方文檔中Windows 10 1507最高支持4.7,但我這邊有台LTSB2015(10.0.10240.17488)不能安裝:
(未知的情況)
- https://support.microsoft.com/zh-cn/help/2734782 會錯誤地跳轉到https://support.microsoft.com/zh-cn/help/10164/fix-windows-update-errors,不知道是什麼原因。
- 微軟文檔的中文翻譯不太迅速啊,為了不貼英文鏈接,只能晚點更新了。
強烈建議你使用當前最新版本的正式版操作系統;
不懂再問。
待更新的:
- 語言包問題導致3.5安裝失敗的測試;
- 我想著要不要把Windows10/Server 2016的「microsoft-windows-netfx3-ondemand-package」給整理出來?
- Windows 10 LTSB2015(10.0.10240.17488)安裝4.7失敗的解決方法;
- 4.7.1發布過後,https://docs.microsoft.com/en-us/dotnet/framework/get-started/system-requirements 更新得我都看不懂了,亂七八糟的,等有空了去整理整理,也把下邊這個表格完善了貼上去(Server單獨列出來?):
@大維克多 協助,
@Wang Chunwei 、 @Radow 指正,
@遠方的記憶 提示,
@Rayista 補充,
@李夏熙 提供0x800F081F錯誤信息:
@傅經緯 提供800F0922錯誤信息,且網路上有相似問題,
@墨子 2200MHz 整理。
原答案發佈於:2016.05.20
原答案修改於:2017.07.14
修改於:22:25 2018/01/03
禁止轉載。
推薦閱讀:
※如何評價.NET Core 1.0稱使用.NET Core運行速度是Node.js的八倍,Go的三倍?
※.net最適合做什麼?
※C# 是使用引用計數來發現垃圾對象的嗎?
※微軟開源 .NET 和其他相關項目會造成什麼影響?
TAG:MicrosoftWindows | NET |