2012-05-24 70 views
34

我有興趣安裝.NET 4.5。.net 4.5是否與.net 4.0並行工作?

但我聽說這是一個就地升級。

由於我公司的用戶使用Windows XP。 I can't release any client side apps that use .NET 4.5.

我知道我可以定位.net 4.0的代碼,但是,如果我安裝.net 4.5,是否有在我的機器上運行的東西在Windows XP機器上無法運行的風險(只有.net 4.0)?

(順便說一下,我看了,但沒有看到這個問題問。如果已經問,請點我吧,我會嘗試刪除這一個。)

+1

4.5混淆了我比其他人更多地使用WindRT。 – Paparazzi

+1

請勿在生產機器上安裝測試版。我從來沒有遇到過這麼大的問題。使用虛擬機如果你想玩它。 –

回答

23

是的,有風險你描述的那種。 .NET 4.0接口是不變的,所以如果你的目標是.NET 4.0,你的程序將在.NET 4.0上編譯和運行XP,但.NET 4.0的.NET 4.5實現也包含錯誤修正。如果你依賴.NET Framework不是bug,而且唯一可用的.​​NET Framework for XP是bug,你的程序將會遇到這些bug。我在Entity Framework中發生過這種情況,但也可能會有其他錯誤修復。

+10

那麼基本上VS 11會「感染」我的開發機器?我現在將無視用戶不具備的任何修復程序?這是可怕的。如果我能看到bug,我可以解決它們。如果我甚至沒有看到它們,那麼這隻會讓我看起來像一個糟糕的開發者。 – Vaccano

+4

@Vaccano平心而論,這也適用於您的常規Windows更新以及禁用它的用戶。 – hvd

+0

但是,Windows更新不包含值得開發修復的年份。他們通常會進行安全調整。或者稍微修復。用戶可以選擇是否禁用它(在我的公司,他們無法控制)。 – Vaccano

1

接受的答案是非常相關的,但我要補充的情況的一個例子,其中4.0目標一4.5+機器上編譯比4.0與修復的bug不太有用的東西。

如果您的項目中有任何ComReference,他們將在構建機器上調用.NET 4.5中的tlbimp.exe。這可能會導致您的軟件包含引用的包裝器,例如,僅存在於.NET 4.5中的System.Reflection.MethodInfo.CreateDelegate(System.Type)方法。您將在WinXP機器上獲得MissingMethodException

使用ComAdmin命名空間(這是用於訪問COM +目錄的COM對象)時,發生了這種情況,但我懷疑問題可能會更廣泛。