我目前正在開始創建一個應用程序,它將從C#5的異步等待功能中獲益頗多。但我不確定要使用哪個版本的VS和異步運行時。看看OS流行度圖表,我需要再支持Windows XP三年左右。它看起來像.net 4.5只運行在較新版本的Windows上,所以我需要定位.net 4.0。開發機器使用Windows 7,因此使用更新版本的VS並不是問題。在.net上使用async-await 4
現在我需要先選擇一個編譯器這樣做的:
- VS2010與AsyncCTP
- VS2012預覽(也是最後一次到達),設定目標到.NET 4.0
- 單聲道(貌似2.12具有異步的await,我更喜歡/我習慣了在VS作爲的MonoDevelop IDE)
哪一個具有更少的代碼生成錯誤?看看Jon Skeet's blog VS2012 Preview使用的是一個永不代碼生成器,而不是CTP。
更重要的是哪個運行時使用?
VS2012是否包含與.net 4一起使用的可再發行異步運行時?
我設法通過引用AsyncCTP運行時來預覽編譯代碼。但由於CTP具有奇怪的許可條件,這看起來不是一個好的長期解決方案。
或者我應該使用第三方實施?也許mono有一個?
爲了分發庫,我更喜歡簡單地將dll放在與應用程序相同的目錄中,而不是某種安裝程序。
如果我的二進制文件在mono + Linux/MacOS上沒有變化,我也會喜歡它。所以運行時應該與任何單聲道(可能是2.12)內置的兼容,或者允許在非Windows操作系統上使用。
我不認爲你會得到一個CTP版本太遠,因爲你將不被允許重新分配任何CTP與商業應用程序的一部分。肯定有潛伏的錯誤,並且它的性能還沒有優化。您可能會更快地開發它,但您的客戶不會樂意安裝可能干擾最終發佈版本的測試版軟件。 – 2012-02-05 07:39:51
@Alois AsyncCTP的更高版本允許重新分發。可能發生的最糟糕的事情是我的應用程序中斷。這並不是因爲它可能會干擾其他應用程序,所以我看不出您的音樂會是否會干擾最終版本。另外我的問題的一部分是,如果將來有最終版本支持WinXP的話。 – CodesInChaos 2012-02-06 22:33:29