我有兴趣安装 .NET 4.5。
但我听说这是就地升级。
由于我公司的用户使用的是 Windows XP。我无法发布任何使用 .NET 4.5 的客户端应用程序。
我知道我可以在编写代码时以 .net 4.0 为目标,但是,如果我安装 .net 4.5,是否存在在我的机器上运行而无法在 Windows XP 机器(只有 .net 4.0)上运行的风险?
(顺便说一下,我看了但没有看到有人问过这个问题。如果有人问过,请指点我,我会尝试删除这个问题。)
我有兴趣安装 .NET 4.5。
但我听说这是就地升级。
由于我公司的用户使用的是 Windows XP。我无法发布任何使用 .NET 4.5 的客户端应用程序。
我知道我可以在编写代码时以 .net 4.0 为目标,但是,如果我安装 .net 4.5,是否存在在我的机器上运行而无法在 Windows XP 机器(只有 .net 4.0)上运行的风险?
(顺便说一下,我看了但没有看到有人问过这个问题。如果有人问过,请指点我,我会尝试删除这个问题。)
是的,存在您描述的那种风险。.NET 4.0 接口没有改变,因此如果您以 .NET 4.0 为目标,您的程序将在带有 .NET 4.0 的 XP 上编译和运行,但 .NET 4.0 的 .NET 4.5 实现也包含错误修复。如果您依赖的 .NET Framework 没有错误,并且 XP 唯一可用的 .NET Framework 有错误,那么您的程序将会遇到这些错误。我在 Entity Framework 中遇到过这种情况,但也可能有其他错误修复。
我在 WPF 论坛上问了这个问题,得到的答案与@hvd 给出的答案基本相同。
http://social.msdn.microsoft.com/Forums/en/wpf/thread/c05a8c02-de67-47a9-b4ed-fd8b622a7e4a
接受的答案非常相关,但让我添加一个示例,说明在 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 对象,但我怀疑问题可能更广泛。