今天在对我运行的C#MVC站点进行了一些更改之后,我又回去做了一些修改并遇到了这个错误:
缺少编译器所需的成员System.Runtime.CompilerServices.ExtensionAttribute..ctor
错误有点模糊(显然除了它的描述),因为它没有给我一个文件,行或列来引用,只有项目 . 此外,它总共抛出错误20次 . 我在部署时间(当时完全正常运行)和现在之间只对代码进行了三次更改 . 我恢复了我的更改,它仍然抛出了同样的错误,这对我来说毫无意义 .
我没有在SO或Google上找到关于此错误的大量信息,除了this guys解决方案和一些Mono项目错误的引用(我特别想要这样做,因为我不需要这样做直到这一点,它只会让我的代码变得混乱 .
只是好奇,如果有人之前遇到过这个问题 . 提前致谢!
11 回答
在项目中的某处编写此代码可能会解决您的问题 . 这个对我有用
尝试对.NET 4.0使用异步任务时出现此错误 . 将Target Framework更新到4.5.2修复了问题 .
我今天也遇到了这种情况 . 在我的例子中,我在我的.NET 4.0应用程序中引用了Newton.Json.Net dll v3.5 . 我意识到我甚至没有使用这个库,因此一旦我从我的引用中删除它,它就不再给我编译错误了 .
问题解决了!!!
在我的情况下,这是因为该项目没有引用
Microsoft.CSharp
. 一旦我添加了对该程序集的引用,它就编译得很好 .我没有正确的解决方案,但我会添加我的数据点:
在我的情况下,错误是由引用GoogleSearchAPINet20引起的
这是发生的事情:
我关闭了构建的解决方案
我再次打开解决方案 . 它仍然 Build
一旦我做出任何改变并尝试构建,我就会得到19个"Missing compiler required member ..."错误
我删除了对GoogleSearchAPINet20的引用
我将对GoogleSearchAPINet20的引用添加回来
我构建了解决方案 . 它构建没有错误
只要我的Visual Studio处于打开状态,我现在就可以正确地进行代码更改,构建或执行任何其他操作
我关闭了Visual Studio
从第一步开始重复
我根本没有在我的解决方案中引用System.Core.dll,而我的目标框架是.NET 4 .
我在这一点上有点恼火......
实际错误来自导致错误的2.0程序集包含此代码的事实:
上面的代码允许.NET 2.0程序集使用扩展方法(请参阅Using extension methods in .NET 2.0?) . 虽然如果你以.NET 4.0为目标并引用2.0程序集(包含上面的代码),它会混淆编译器,因为mscorlib.dll(4.0)在同一名称空间中包含相同的类 .
我修好了
通过再次编译原始2.0程序集而不使用属性定位4.0
删除程序集(显然)
在您编译的目标中添加第三个扩展属性(它似乎否决了引用的定义)
此错误通常意味着您的项目正在针对.NET 2.0进行编译,或者您没有引用正确版本的System.Core.dll
有关近似重复的问题,请参阅Error when using extension methods in C#
对我来说,当我在我的.net4.0项目中添加带异步Task await的异步方法时出现问题!
使用以前版本的.NET-Framework 4.5,您必须安装此软件包:
要么
有关Nuget或Nuget的更多信息
我不知道是否有其他人经历过这个,但是在使用
dynamic
类型添加一些代码并将WebAPI合并到一个源自VS2013中的TypeScript应用程序的项目中后,我突然陷入此错误 . 只需添加对Microsoft.CSharp的引用即可解决我的问题 .希望这有助于其他人 .
从.NET 4.0项目引用的NLog.dll 2.0也可能导致这种情况 .
在为winforms项目添加一些异步方法后,我遇到了同样的异常 . 我需要将我的.NET版本从4升到4.5