.net 使用异步V3而不安装它
在我的机器上安装VS-SP1和异步CTPV3时出现问题。由于某种原因,它会导致我在该机器上运行的任何.NET应用程序崩溃。(幸好我使用的是虚拟机,我可以回滚) 我已将更新csc.exe文件复制到Windows目录中的.NET framework 4目录中 当我从命令行使用msbuild构建项目时,一切都会构建并运行良好 当我从VS2010中编译同一个项目时,我得到编译时错误,异步关键字未知 我不在乎VS没有突出显示async和await的语法,但是我不得不从命令行构建项目,这确实让我很烦恼.net 使用异步V3而不安装它,.net,visual-studio-2010,visual-studio,async-ctp,async-await,.net,Visual Studio 2010,Visual Studio,Async Ctp,Async Await,在我的机器上安装VS-SP1和异步CTPV3时出现问题。由于某种原因,它会导致我在该机器上运行的任何.NET应用程序崩溃。(幸好我使用的是虚拟机,我可以回滚) 我已将更新csc.exe文件复制到Windows目录中的.NET framework 4目录中 当我从命令行使用msbuild构建项目时,一切都会构建并运行良好 当我从VS2010中编译同一个项目时,我得到编译时错误,异步关键字未知 我不在乎VS没有突出显示async和await的语法,但是我不得不从命令行构建项目,这确实让我很烦恼 为什
Ido.VS2012和异步目标包是最佳选择,原因如下:
作为异步行为很重要的一个例子,考虑以下非常简单的重试任务的方式。当函数使用异步CTP编译时,如果出现异常,它将以静默方式失败(如在应用程序静默终止中):
private static async Task<T> Retry<T>(Func<T> func, int retryCount)
{
while (true)
{
try
{
var result = await Task.Run(func);
return result;
}
catch
{
if (retryCount == 0)
throw;
retryCount--;
}
}
}
private静态异步任务重试(Func-Func,int-retryCount)
{
while(true)
{
尝试
{
var result=wait Task.Run(func);
返回结果;
}
抓住
{
如果(retryCount==0)
投掷;
重新计数--;
}
}
}
也就是说,我已经使用异步CTP一年多了,唯一的问题是添加VisualStudio2010SP1后的安装顺序。如果订单错误,Asycn CTP将不会安装,您必须删除SP1并按正确顺序重新安装所有内容
尽管如此,我还是会在可行的情况下(即整个团队都准备好切换),尽快切换到2012和目标包,以避免出现多个代码版本和恼人的异常行为。为什么不改用VS2012呢?我对问题1的猜测是VS并没有真正打电话给
csc
,但是通过编程方式从自己的DLL调用编译器。VS use MSBuild应该使用csc。我还将日志级别改为diagnostics,它表明它使用了正确的csc.exeAsync针对.Net 4的目标包对您不起作用?我不想进入目标包,但我想我别无选择。感谢您提供详细的答案。我想我现在要搬到VS2012了