方法错误’无法等待来自await和async属性的System.Threading.Tasks.Task’

我已经安装了NuGet Package Async for .NET Framework 4,Silverlight 4和5以及Windows Phone 7.5和8。

Version 1.0.16 

我使用的是Microsoft .NET 4.0,由于Web Hosting Package Restrictions,我无法升级。 (可惜!)

我的测试代码:(我正在使用Linq to SQL Query代替Thread.Sleep)

 public class Search { public async Task<List> GetResults(string SearchString) { await System.Threading.Tasks.Task.Factory.StartNew(() => Thread.Sleep(1000)); } } 

我的错误:

 Cannot await 'System.Threading.Tasks.Task' 

http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx谈到了这个错误,但它并不是真正的答案,因为我没有使用VB,而且我已经在做解决方案描述的内容了。

[编辑]我收到警告:

 Warning 4 The primary reference "Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" could not be resolved because it has an indirect dependency on the framework assembly "System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0". To resolve this problem, either remove the reference "Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" or retarget your application to a framework version which contains "System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". 

谢谢你的帮助。

什么样的恶梦! 我发现了这个问题。

 Microsoft.Bcl 

在我的情况下,Microsoft.Bcl和Microsoft.Bcl.Async出现冲突。 我使用以下命令删除了Microsoft.Bcl和Microsoft.Bcl.Async:

 uninstall-package Microsoft.Bcl.Async -force 

然后:

 uninstall-package Microsoft.Bcl -force 

然后再次安装:

 install-package Microsoft.Bcl.Async 

现在它有魅力。 我不相信这个? 也不确定为什么Microsoft.Bcl首先被留在那里。 删除Microsoft.Bcl.Async后,它会被遗忘。 到目前为止一切正常。 还有一些测试要做。

如果其他人遇到NuGet包问题,您可以自担风险:

 update-package -pre 

这将尝试回滚已更新的包。 这就是我发现问题的方法。

[编辑]值得注意的是,在进一步测试后,卸载Microsoft.Bcl.Async时不会删除Microsoft.Bcl。 Microsoft.Bcl可以单独更新,并且在Microsoft.Bcl.Async之外出现此更新可能是一个问题。 安装Microsoft.Bcl.Async时安装Microsoft.Bcl。

希望这有助于他人!

修改您的配置,如下所示:

                

用您正在引用的System.RuntimeSystem.Threading.Tasks的版本(例如,2.5.10.0)替换[version]。