我正在嘗試使用microsoft reference source,但遇到問題。 根據他們對troubleshooting的建議,我嘗試驗證我使用的是正確的.NET框架版本。然而 反彙編表明這一點:如何更改項目上的.NET框架版本?
,但我卻改變項目,你可以在這裏看到的目標框架:
我是否需要更改版本別的地方?
我正在嘗試使用microsoft reference source,但遇到問題。 根據他們對troubleshooting的建議,我嘗試驗證我使用的是正確的.NET框架版本。然而 反彙編表明這一點:如何更改項目上的.NET框架版本?
,但我卻改變項目,你可以在這裏看到的目標框架:
我是否需要更改版本別的地方?
你得到的是準確的。一個面向.NET 4.5或4.5.1的項目仍然使用CLR 4.0.30319版本和核心框架程序集,如mscorlib v4.0.0.0
這在很大程度上是對.NET版本3.0,3.5和3.5發生的事情的重複SP1,它們的目標是CLR 2.0.50727和核心框架程序集v2.0.0.0。就像4.5和4.5.1一樣,它們並不是新的並行版本。他們只是將新組件添加到現有組。
您仍然可以通過ildasm.exe知道您選擇了哪個目標,查看您在元數據中看到的System.Runtime.Versioning.TargetFrameworkAttribute屬性。 CLR檢查這個以確保你不想在.NET 4.0或4.5安裝上運行4.5.1。提供下載你需要的版本。它看起來像這樣(爲了便於閱讀而編輯):
.custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) =
(01 00 1C 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B // ....NETFramework
2C 56 65 72 73 69 6F 6E 3D 76 34 2E 35 2E 31 01 // ,Version=v4.5.1.
00 54 0E 14 46 72 61 6D 65 77 6F 72 6B 44 69 73 // .T..FrameworkDis
70 6C 61 79 4E 61 6D 65 14 2E 4E 45 54 20 46 72 // playName..NET Fr
61 6D 65 77 6F 72 6B 20 34 2E 35 2E 31) // amework 4.5.1
+1,這是一個很好的答案,所以SO真的很幸運有一個像你這樣的貢獻者 – Habib
如果您試圖從元數據版本中確定.Net框架版本,那麼這是不正確的。
元數據版本顯示運行時版本或CLR版本。
.NET Framework 4,4.5和4.5.1包括CLR 4,但Framework 2.0,3.0和3.5的.NET 包括CLR 2.0。 (有沒有的CLR版本3 。)
所以對於.NET Framework 4中,4.5和4.5.1,你會看到相同的CLR版本即V4.0.30319。您可能會看到this answer以識別.Net框架版本。
這是一個非常好的答案,除了「它可以安全地假設」。它應該被驗證。你是正確的,在問題中概述的方法沒有這樣做。 –
@BenVoigt,其實我試圖找到資源/參考來識別.Net框架版本的應用程序。但是你是對的,我應該修改這句話 – Habib
您是否嘗試重建項目? –
@LRNAB是的,好幾次,我也關閉並重新打開了Visual Studio。 – Sarien
您是否認爲.Net Framework 4.0和4.5的「元數據版本」應該不同? – Habib