.NET 4.5和.NET 4.0可以同时运行吗?

35

我想安装.NET 4.5。

但是我听说这是一次就地升级。

由于我公司的用户使用Windows XP。我无法发布使用.NET 4.5的任何客户端应用程序。

我知道我可以在编码时针对.NET 4.0进行目标设置,但如果我安装了.NET 4.5,我的机器上运行正常的功能是否会在只有.NET 4.0的Windows XP机器上无法工作?

(顺便说一句,我查过了,但没有看到类似的问题。如果已经有人问过,请指出来,我会尝试删除这个问题。)


1
4.5让我更加困惑,尤其是在混合使用WindRT的情况下。 - paparazzo
1
不要在生产机器上安装测试版。我曾经这样做过,遇到了很大的问题。如果你想尝试它,可以使用虚拟机。 - Hans Passant
3个回答

23

是的,您所描述的风险是存在的。.NET 4.0接口没有改变,因此如果您针对.NET 4.0进行开发,您的程序将在安装了.NET 4.0的XP上编译和运行,但.NET 4.5实现了.NET 4.0的bug修复。如果您依赖于.NET Framework没有漏洞,并且XP上唯一可用的.NET Framework有漏洞,那么您的程序将会遇到这些漏洞。我曾经在Entity Framework中遇到过这种情况,但也可能存在其他的bug修复。


10
所以基本上,VS 11会“感染”我的开发机吗?我将对任何用户没有的修复措施变得盲目?那太可怕了。如果我能看到这些错误,我可以解决它们。如果我甚至看不到它们,那么它只会让我看起来像一个糟糕的开发人员。 - Vaccano
4
公平地说,这也适用于您的常规Windows更新以及禁用它的用户。 - user743382
但是Windows更新并不包含多年的开发修复。它们通常是安全调整或小修补。用户可以选择禁用它或不禁用它(在我的公司中,他们无法控制这一点)。 - Vaccano

2

1
接受的答案非常相关,但是让我来举个例子,说明在 4.5+ 机器上编译的 4.0 目标可能不如修复了错误的 4.0 更有用。
如果您的项目中有任何 ComReference,它们将在构建机器上调用 .NET 4.5 中的 tlbimp.exe。这可能导致您的软件包含引用包装器,例如仅存在于 .NET 4.5 中的 System.Reflection.MethodInfo.CreateDelegate(System.Type) 方法。您将在 WinXP 机器上收到 MissingMethodException。
当我使用 ComAdmin 命名空间时,这种情况就发生了,这些 COM 对象用于访问 COM+ 目录,但我怀疑这个问题可能更广泛。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接