Dot-Net

完全了解 .NET 版本和向後兼容性

  • January 13, 2016

我有一個 .NET 2.0 應用程序,我計劃製作一個“智能安裝程序”,用於檢查使用者 PC 上可用的 .NET 版本並為其安裝我的特定埠。我看到了:

  • Windows XP (SP2) 附帶 .NET 2.0
  • Windows Vista 附帶 .NET 3.0
  • Windows 7 附帶 .NET 3.5
  • Windows 8 附帶 .NET 4.5

據我所知,唯一不向後兼容的是 CLR 版本,它在 .NET 4.0 之後發生了變化。

因此,如果我不希望使用者僅為我的應用程序安裝額外的框架,我應該擁有這些版本的應用程序:

  • .NET 2.0 - XP(SP2 及更高版本)、Vista(3.0 應該能夠執行 2.0)和 7(3.5 應該能夠執行 2.0)
  • .NET 4.0 - 如果有人只安裝了 4.0 而沒有其他
  • .NET 4.5 - 適用於擁有 Windows 8 且未安裝其他 .NET 的使用者

我對嗎?還是 4.5/4.0 向後兼容?

編輯:如果任何上部數據不正確,請糾正我

據我所知,唯一不向後兼容的是 CLR 版本,它在 .NET 4.0 之後發生了變化。

這不是真的。您可以使您的 .NET2 編譯應用程序在 .NET4 框架上執行。

您只需將以下內容添加到您的 app.config 中:

<configuration>
<startup>
   <supportedRuntime version="v2.0.50727"/>
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
 </startup>
</configuration>

注意,我同意@KingKronus,即Why not just pick the lowest common denominator?

在您的情況下,這將是 .NET2 編譯的,並且只有一組 pdb 和一個編譯集。

是的,您需要在 .net4 執行時測試您的 .NET2 編譯的應用程序是否正常執行,但無論如何您都需要在原始解決方案中的每個框架中測試您的應用程序。

引用自:https://stackoverflow.com/questions/13915498