我们有一个用C ++ 5.0 for .NET 4.5编写的Windows服务。我的代码使用了一些较新的语言功能(async
和await
)和框架功能(Task.Run
,Task.Delay
,IProgress
,CancellationToken
等等。)
安装.NET 4.5时,我们的产品在Windows 7 和 8 上运行良好。我们的问题是,我们现在需要在 XP 机器上运行。即使.NET 4.5 could be installed on Windows XP,这台机器上的空间也不够。
有什么方法可以让.NET 4.5应用程序在这台机器上运行?我已经考虑使用Mono AOT Compiler或NGen.exe将程序编译为本机代码,但我没有运气 - 我不认为它们中的任何一个实际上实现了我想要的做。
失败了 - 我们想过创建一个可启动的预安装闪存驱动器,运行我们的应用程序安装的简单版本的Windows(如WinPE?),但这不是我的深度,我不知道在哪里开始。这是一个好主意吗?我怎么能接近这个?
我们的另一个选择是尝试安装.NET 4.0并使用Async Targeting Pack。
或者有没有人有任何其他想法?有没有办法在运行.NET 2.0的XP机器上构建/编译/运行我的.NET 4.5应用程序(使用.NET 4.5功能)?
答案 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
只是在本地计算机上预编译应用程序以加快启动速度,但他们不需要删除安装框架的需要。