缺少编译器所需的成员“System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitOnCompleted”
Posted
技术标签:
【中文标题】缺少编译器所需的成员“System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitOnCompleted”【英文标题】:Missing compiler required member 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitOnCompleted' 【发布时间】:2016-11-28 14:24:37 【问题描述】:在我的项目中添加这个方法(我生命中的第一次 C# async 关键字测试)后,我收到以下错误,为什么?
public async Task<Member> AddOrUpdate(DownloadFormModel model)
IMailChimpManager mailChimpManager = new MailChimpManager(ConfigurationManager.AppSettings["mailChimpKey"]);
Member member = new Member EmailAddress = model.Email, Status = Status.Subscribed;
member.MergeFields.Add("NAME", model.Name);
return (await mailChimpManager.Members.AddOrUpdateAsync(ConfigurationManager.AppSettings["mailChimpDownloadListID"], member));
编译后 VStudio 2015 内部出错:
我的项目是一个面向 .NET Framework 4.5(刚从 4.0 升级)的 ASP.NET MVC 4,我正在尝试在其中集成 MailChimp.NET v3。
谢谢。
编辑: 在 VStudio 2015 中创建了一个全新的 MVC WebApplication .NET 4.5 项目,并且相同的方法编译没有错误。我应该检查什么?
【问题讨论】:
您是否有Microsoft.Bcl.Async
nuget 包,.NET 4.5 不需要它并且可能会导致问题?
添加了Microsoft.Blc
和Microsoft.Blc.Build
,但没有成功。 Microsoft.Blc.Async
未列在 VStudio NuGet 管理器中。
我的意思是,当您以 .NET 4.5 为目标时,您不应该需要任何这些。
好吧,这是你第一次使用异步,我会启动一个新的控制台应用程序并尝试编写一个等待Task.Delay
结果的异步方法,因为例子。在开始使用 MailChimp 之前检查 that 是否有效。
嗯,你应该能够很容易地找到它:依次单独尝试每个。 (控制台应用程序 + Mailchimp,没有 Mailchimp 的 ASP.NET v4 应用程序。)
【参考方案1】:
问题是 package.config 文件中的这一行,更一般而言,同一文件中的许多行仍然报告 targetFramework="net40"
:
<package id="AsyncCTP" version="0.3" targetFramework="net40" />
在将项目重新定位到 .NET 框架 4.5 之后,我应该调用
Update-Package –reinstall <packageName>
对于列表中的每个包。
【讨论】:
以上是关于缺少编译器所需的成员“System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitOnCompleted”的主要内容,如果未能解决你的问题,请参考以下文章
无法定义使用“动态”的类或成员,因为编译器需要类型“System.Runtime.CompilerServices.DynamicAttribute”
找不到编译动态表达式所需的一种或多种类型。您是不是缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用?
无法定义使用'dynamic'的类或成员,因为编译器需要输入'System.Runtime.CompilerServices.DynamicAttribute'类型(代