2012-05-24 47 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对象)时,发生了这种情况,但我怀疑问题可能会更广泛。