Atualmente, estou começando a criar um aplicativo que beneficiaria muito com o recurso de espera assíncrona do C # 5. Mas não tenho certeza de qual versão do VS e do tempo de execução assíncrono usar.
Analisando os gráficos de popularidade do sistema operacional, precisarei dar suporte ao Windows XP por mais três anos. Parece que o .net 4.5 é executado apenas nas versões mais recentes do Windows, então eu preciso direcionar o .net 4.0. As máquinas de desenvolvimento usam o Windows 7, portanto, usar uma versão mais recente do VS não é um problema.
Agora, primeiro preciso escolher um compilador para fazer isso:
- VS2010 com AsyncCTP
- Visualização do VS2012 (e final quando chegar), definindo o destino como .net 4.0
- Mono (parece que a versão 2.12 tem async-waitit, eu prefiro / estou acostumado a VS do que o MonoDevelop como IDE)
Qual deles possui menos bugs de geração de código? Olhando para o blog de Jon Skeet, o VS2012 Preview usa um gerador de código que nunca o CTP.
E, mais importante, qual tempo de execução usar?
O VS2012 contém um tempo de execução assíncrono redistribuível para uso com o .net 4?
Consegui compilar o código, com a visualização, fazendo referência ao tempo de execução do AsyncCTP. Mas como o CTP tem condições estranhas de licenciamento, isso não parece uma boa solução a longo prazo.
Ou devo usar uma implementação de terceiros? Talvez mono tem um?
Para distribuir a biblioteca, prefiro simplesmente colocar a dll no mesmo diretório que o aplicativo, em vez de algum tipo de instalador.
Eu também gostaria que meus binários funcionassem sem alterações no mono + Linux / MacOS. Portanto, o tempo de execução deve ser compatível com qualquer mono (2.12 provavelmente) incorporado ou permitir o uso em sistemas operacionais que não são do Windows.