我目前正在开始创建一个应用程序,该应用程序将从 C# 5 的 async-await 功能中获益良多。但我不确定要使用哪个版本的 VS 和异步运行时。
查看操作系统流行度图表,我需要再支持 Windows XP 三年左右。看起来 .net 4.5 只能在较新版本的 Windows 上运行,所以我需要以 .net 4.0 为目标。开发机器使用的是Windows 7,所以使用较新版本的VS是没有问题的。
现在我需要首先选择一个编译器来执行此操作:
- VS2010 带 AsyncCTP
- VS2012 预览版(以及最终版),将目标设置为 .net 4.0
- Mono(看起来 2.12 有 async-await,我更喜欢/习惯于 VS 而不是 MonoDevelop 作为 IDE)
哪一个的代码生成错误更少?查看Jon Skeet 的博客,VS2012 预览版使用的代码生成器从未使用过 CTP。
更重要的是要使用哪个运行时?
VS2012 是否包含可重新分发的异步运行时以与 .net 4 一起使用?
通过引用 AsyncCTP 运行时,我设法通过预览编译代码。但由于 CTP 有奇怪的许可条件,这看起来不是一个好的长期解决方案。
还是我应该使用第三方实现?也许单声道有一个?
对于分发库,我更喜欢简单地将 dll 放在与应用程序相同的目录中,而不是某种安装程序。
如果我的二进制文件可以在 mono+Linux/MacOS 上不做任何更改,我也会喜欢它。因此,运行时应该与任何内置的单声道(可能是 2.12)兼容,或者允许在非 Windows 操作系统上使用。