使用.NET 2.0在XP上运行.NET 4.5程序

时间:2013-04-05 10:19:28

标签: c# .net winforms windows-xp .net-4.5

我们有一个用C ++ 5.0 for .NET 4.5编写的Windows服务。我的代码使用了一些较新的语言功能(asyncawait)和框架功能(Task.RunTask.DelayIProgressCancellationToken等等。)

安装.NET 4.5时,我们的产品在Windows 7 8 上运行良好。我们的问题是,我们现在需要在 XP 机器上运行。即使.NET 4.5 could be installed on Windows XP,这台机器上的空间也不够。

有什么方法可以让.NET 4.5应用程序在这台机器上运行?我已经考虑使用Mono AOT CompilerNGen.exe将程序编译为本机代码,但我没有运气 - 我不认为它们中的任何一个实际上实现了我想要的做。

失败了 - 我们想过创建一个可启动的预安装闪存驱动器,运行我们的应用程序安装的简单版本的Windows(如WinPE?),但这不是我的深度,我不知道在哪里开始。这是一个好主意吗?我怎么能接近这个?

我们的另一个选择是尝试安装.NET 4.0并使用Async Targeting Pack

或者有没有人有任何其他想法?有没有办法在运行.NET 2.0的XP机器上构建/编译/运行我的.NET 4.5应用程序(使用.NET 4.5功能)?

2 个答案:

答案 0 :(得分:0)

如果您只有一台XP计算机,请将其升级到Windows 7. Windows 7包含一个XP虚拟机,可以与Windows 7程序(包括.NET 4.5应用程序)并行运行旧程序。

否则,您将不得不进行代码更改。最好的方法可能是使用Microsoft.Bcl.Async来定位.NET 4.0。

答案 1 :(得分:0)

AsyncBridge与MS Async Targeting Pack类似,但也适用于.NET 3.5。

然而,它不能使用.NET 2.0;因为任务并行库(定义{{​​1}})是only available for .NET 3.5(并且内置于.NET 4.0中)。

至于Mono,要创建包含框架相关部分的独立应用程序,您需要创建bundle,但我不确定Windows是否支持这些部分。 Task<T>mono --aot只是在本地计算机上预编译应用程序以加快启动速度,但他们不需要删除安装框架的需要。