2013-04-05 149 views
2

我们有一个用C#5.0为.NET 4.5编写的Windows服务。我的代码使用了一些较新的语言功能(asyncawait)和框架功能(Task.RunTask.DelayIProgress,CancellationToken等)。使用.NET 2.0在XP上运行.NET 4.5程序

我们的产品能正常工作在Windows 7 当安装了.NET 4.5 。我们的问题是,我们现在需要这个在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功能)?

+1

重新计算代码比在XP下运行更容易。 XP只是缺少太多的核心DLL更改来运行4.5。 – Serdalis 2013-04-05 10:24:12

+0

我不认为会。我主要依赖基于任务的异步功能。重构排除这将花费很多时间和精力在一些地方! – Connell 2013-04-05 10:31:01

+0

“必须在XP机器上运行”的需求来自哪里?恐怕你不得不让你的顾客失望。在哪里画线? – 2013-04-05 10:31:52

回答

0

AsyncBridge是像MS异步瞄准包,但也可用于.NET 3.5。

但是,它不适用于.NET 2.0;作为任务并行库(它定义了Task<T>)是only available for .NET 3.5(并内置到.NET 4.0中)。对于Mono,要创建一个包含框架相关部分的独立应用程序,您需要创建一个bundle,但我不确定这些在Windows上是否受支持。 mono --aotngen只是预编译应用程序以便在本地计算机上更快地启动,它们并不删除安装框架的需要。

0

如果你只有一个XP的机器,它升级到Windows 7的Windows 7包括可在Windows上运行旧的程序并排侧7程序(包括.NET 4.5的应用程序)的XP虚拟机。

否则,您将不得不对代码进行更改。最好的方法可能是将.NET 4.0与Microsoft.Bcl.Async作为目标。

相关问题