安裝 .NET Framework的技巧以及探究路徑

禁止轉載。

禁止轉載是指「禁止轉載本文內容」,可以通過超鏈接的方式分享本文。

本文章內容由我在該問題下的回答總結而來:

zhihu.com/question/1978

本文會持續更新。

再說一遍:

當你自己沒法解決的時候,請求助於身邊有空的、懂電腦的人。

還有:

一般情況下,程序/系統讓你重啟,就不要忽略掉,保存工作,趕緊重啟!


目錄

  • 我需要安裝哪些版本的 .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請儘快進行升級,參考:support.microsoft.com/z

**:除非必要,不建議繼續使用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 版本和依賴關係

docs.microsoft.com/zh-c

...

每個新版本的 .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 - docs.microsoft.com/zh-c

.NET Framework 系統需求

docs.microsoft.com/zh-c

注意:4.7.1已發布,上邊鏈接的中文版本頁面和上邊的表格還未更新。

安裝 .NET Framework

docs.microsoft.com/zh-c

單擊「4.7 離線安裝程序下載頁」以下載離線安裝包,或直接訪問microsoft.com/zh-cn/dow

注意: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;

詳細信息:support.microsoft.com/e

打上補丁後:

另外,在Windows 7 SP1上安裝4.7時最好保證你的系統有一個穩定的Internet連接,不然可能會遇到錯誤:

相關參考:technet.microsoft.com/z

提示:打KB2677070和KB2813430沒用,聯網重裝就行了。

* 在Windows 8、8.1、10上安裝 .NET Framework 3.5

msdn.microsoft.com/zh-c

...

一般情況下,請勿卸載計算機上的任何 .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

docs.microsoft.com/en-u

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(英文網頁)

support.microsoft.com/e

該工具會重置Windows Installer服務,並在需要時連接Internet下載 .NET Framework進行安裝。但遺憾的是,該工具並不能對高於Windows 7 SP1/Server 2008 R2 SP1的系統進行有效修復,也不能重新安裝3.5,所以暫時是沒有任何作用的。

* 錯誤0x800F081F/0x800F0906/0x800F0907的異常處理

support.microsoft.com/z

終極的解決方法:重裝系統。

以下是我自已測試過的情況:

  • 0x800F0906
  1. 由於未連接到Internet或用戶中斷了下載過程而出錯。解決方法:讓你的系統聯網且不要手動中斷,覺得下載慢或者網路不好的話請參閱本文「使用系統鏡像安裝 .NET Framework 3.5」部分;
  2. 在Windows 8/8.1,使用系統鏡像安裝3.5時,沒有使用「/LimitAccess」參數,由於指定的源路徑有誤,且Windows Update出錯或未連接到Internet而出錯;
  3. 由於組策略設置出錯而出錯(與0x800F0907有所不同)。
  • 0x800F0907
  1. 組策略設置禁止。解決方法:組策略(gpedit.msc) - 計算機配置 - 管理模板 - 系統 - 制定可選組件安裝和組件修復的設置,改為「未配置」或「已禁用」。
  • 0x800F081F
  1. 使用系統鏡像安裝3.5時,使用了「/LimitAccess」參數,由於指定的源路徑有誤而出錯;
  2. 在Windows 10,使用系統鏡像安裝3.5時,沒有使用「/LimitAccess」參數,由於指定的源路徑有誤,且Windows Update出錯或未連接到Internet而出錯;
  3. 在出現過一次0x800F081F後,若指定的源路徑不變,無論此時源路徑是否正確,都會持續出現該錯誤。解決方法:重啟系統(註銷沒用)。

* 「指定的源路徑有誤」包括但不限於:路徑輸入錯誤、64位系統指定了32位鏡像的源(反過來同樣)、源路徑所屬鏡像所包含系統的版本號與當前系統的不等(參考:Operating System Version );

* 「Windows Update出錯」的解決方法:support.microsoft.com/z

  • 0x800F081F/0x800F0906

support.microsoft.com/z

grylewicz.pl/wlaczanie-

在沒有其他問題的情況下,給從未安裝過 .NET Framework 3.5的Windows 8/Server 2012或Windows 8.1/Server 2012 R2打KB2966827或KB2966828後,第一次嘗試安裝3.5時可能會出錯:

解決方法:打上對應操作系統版本的KB3005628;

提示:KB3005628的作用是刪除KB2966827或KB2966828;從go.microsoft.com/fwlinkdownload.windowsupdate.com下載的「ndpfixit-kb3005628-*.exe」文件不一樣,前者運行時會彈出命令行界面,後者沒有任何窗口,但看上去兩者功能是相同的;兩種「ndpfixit-kb3005628-*.exe」運行後都沒有任何提示,要等一段時間才能發現KB2966827或KB2966828被刪除了;而且都需要以管理員身份運行,不然沒有任何效果。

[以下內容請勿引作參考]

winitpro.ru/index.php/2

語言包問題導致 .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)不能安裝:

(未知的情況)

  • support.microsoft.com/z 會錯誤地跳轉到support.microsoft.com/z,不知道是什麼原因。
  • 微軟文檔的中文翻譯不太迅速啊,為了不貼英文鏈接,只能晚點更新了。

強烈建議你使用當前最新版本的正式版操作系統;

不懂再問。


待更新的:

  1. 語言包問題導致3.5安裝失敗的測試;
  2. 我想著要不要把Windows10/Server 2016的「microsoft-windows-netfx3-ondemand-package」給整理出來?
  3. Windows 10 LTSB2015(10.0.10240.17488)安裝4.7失敗的解決方法;
  4. 4.7.1發布過後,docs.microsoft.com/en-u 更新得我都看不懂了,亂七八糟的,等有空了去整理整理,也把下邊這個表格完善了貼上去(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 |