3

我们有一个用 C# 5.0 为 .NET 4.5 编写的 Windows 服务。我的代码使用了一些较新的语言特性(asyncawait)和框架特性(Task.Run、、、、Task.DelayIProgressCancellationToken

安装 .NET 4.5后,我们的产品在 Windows 78上运行良好。我们的问题是,我们现在需要它在XP机器上运行。即使 .NET 4.5可以安装在 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 功能)?

4

2 回答 2

0

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

否则,您将不得不更改代码。最好的方法可能是使用Microsoft.Bcl.Async以 .NET 4.0 为目标。

于 2013-04-05T10:37:26.970 回答
0

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

但是,它不适用于 .NET 2.0;因为任务并行库(定义Task<T>仅适用于 .NET 3.5(并内置于 .NET 4.0)。

至于 Mono,要创建一个包含框架相关部分的独立应用程序,您需要创建一个bundle,但我不确定 Windows 是否支持这些。mono --aot并且ngen只需预编译应用程序以在本地机器上更快地启动,它们不会消除安装框架的需要。

于 2013-04-05T10:55:39.740 回答