35

我有兴趣安装 .NET 4.5。

但我听说这是就地升级。

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

我知道我可以在编写代码时以 .net 4.0 为目标,但是,如果我安装 .net 4.5,是否存在在我的机器上运行而无法在 Windows XP 机器(只有 .net 4.0)上运行的风险?

(顺便说一下,我看了但没有看到有人问过这个问题。如果有人问过,请指点我,我会尝试删除这个问题。)

4

3 回答 3

23

是的,存在您描述的那种风险。.NET 4.0 接口没有改变,因此如果您以 .NET 4.0 为目标,您的程序将在带有 .NET 4.0 的 XP 上编译和运行,但 .NET 4.0 的 .NET 4.5 实现也包含错误修复。如果您依赖的 .NET Framework 没有错误,并且 XP 唯一可用的 .NET Framework 有错误,那么您的程序将会遇到这些错误。我在 Entity Framework 中遇到过这种情况,但也可能有其他错误修复。

于 2012-05-25T06:50:45.500 回答
2

我在 WPF 论坛上问了这个问题,得到的答案与@hvd 给出的答案基本相同。

http://social.msdn.microsoft.com/Forums/en/wpf/thread/c05a8c02-de67-47a9-b4ed-fd8b622a7e4a

于 2012-05-31T18:27:47.193 回答
1

接受的答案非常相关,但让我添加一个示例,说明在 4.5+ 机器上编译的 4.0 目标不如具有固定错误的 4.0 有用。

如果您ComReference的项目中有任何项目,它们将从构建机器上的 .NET 4.5 调用tlbimp.exe。这可能会导致您的软件包含引用的包装器,例如,System.Reflection.MethodInfo.CreateDelegate(System.Type)仅存在于 .NET 4.5 中的方法。你会MissingMethodException在 WinXP 机器上得到一个。

我在使用ComAdmin命名空间时发生了这种情况,命名空间是用于访问 COM+ 目录的 COM 对象,但我怀疑问题可能更广泛。

于 2016-04-26T10:36:39.373 回答