首页 文章

“丢失编译器所需成员”错误被多次抛出,几乎没有更改代码

提问于
浏览
66

今天在对我运行的C#MVC站点进行了一些更改之后,我又回去做了一些修改并遇到了这个错误:

缺少编译器所需的成员System.Runtime.CompilerServices.ExtensionAttribute..ctor

错误有点模糊(显然除了它的描述),因为它没有给我一个文件,行或列来引用,只有项目 . 此外,它总共抛出错误20次 . 我在部署时间(当时完全正常运行)和现在之间只对代码进行了三次更改 . 我恢复了我的更改,它仍然抛出了同样的错误,这对我来说毫无意义 .

我没有在SO或Google上找到关于此错误的大量信息,除了this guys解决方案和一些Mono项目错误的引用(我特别想要这样做,因为我不需要这样做直到这一点,它只会让我的代码变得混乱 .

只是好奇,如果有人之前遇到过这个问题 . 提前致谢!

11 回答

  • 6

    在项目中的某处编写此代码可能会解决您的问题 . 这个对我有用

    namespace System.Runtime.CompilerServices
    {
        public class ExtensionAttribute : Attribute { }
    }
    
  • 1

    尝试对.NET 4.0使用异步任务时出现此错误 . 将Target Framework更新到4.5.2修复了问题 .

  • 6

    我今天也遇到了这种情况 . 在我的例子中,我在我的.NET 4.0应用程序中引用了Newton.Json.Net dll v3.5 . 我意识到我甚至没有使用这个库,因此一旦我从我的引用中删除它,它就不再给我编译错误了 .

    问题解决了!!!

  • 22

    在我的情况下,这是因为该项目没有引用 Microsoft.CSharp . 一旦我添加了对该程序集的引用,它就编译得很好 .

  • 2

    我没有正确的解决方案,但我会添加我的数据点:

    在我的情况下,错误是由引用GoogleSearchAPINet20引起的

    这是发生的事情:

    • 我关闭了构建的解决方案

    • 我再次打开解决方案 . 它仍然 Build

    • 一旦我做出任何改变并尝试构建,我就会得到19个"Missing compiler required member ..."错误

    • 我删除了对GoogleSearchAPINet20的引用

    • 我将对GoogleSearchAPINet20的引用添加回来

    • 我构建了解决方案 . 它构建没有错误

    • 只要我的Visual Studio处于打开状态,我现在就可以正确地进行代码更改,构建或执行任何其他操作

    • 我关闭了Visual Studio

    • 从第一步开始重复

    我根本没有在我的解决方案中引用System.Core.dll,而我的目标框架是.NET 4 .

    我在这一点上有点恼火......

  • 0

    实际错误来自导致错误的2.0程序集包含此代码的事实:

    namespace System.Runtime.CompilerServices
    {
        public class ExtensionAttribute : Attribute { }
    }
    

    上面的代码允许.NET 2.0程序集使用扩展方法(请参阅Using extension methods in .NET 2.0?) . 虽然如果你以.NET 4.0为目标并引用2.0程序集(包含上面的代码),它会混淆编译器,因为mscorlib.dll(4.0)在同一名称空间中包含相同的类 .

    我修好了

    • 通过再次编译原始2.0程序集而不使用属性定位4.0

    • 删除程序集(显然)

    • 在您编译的目标中添加第三个扩展属性(它似乎否决了引用的定义)

  • 4

    此错误通常意味着您的项目正在针对.NET 2.0进行编译,或者您没有引用正确版本的System.Core.dll

    有关近似重复的问题,请参阅Error when using extension methods in C#

  • 62

    对我来说,当我在我的.net4.0项目中添加带异步Task await的异步方法时出现问题!

    使用以前版本的.NET-Framework 4.5,您必须安装此软件包:

    Install-package Microsoft.Bcl.Async –pre
    

    要么

    Install-Package Microsoft.CompilerServices.AsyncTargetingPack
    

    有关NugetNuget的更多信息

  • 16

    我不知道是否有其他人经历过这个,但是在使用 dynamic 类型添加一些代码并将WebAPI合并到一个源自VS2013中的TypeScript应用程序的项目中后,我突然陷入此错误 . 只需添加对Microsoft.CSharp的引用即可解决我的问题 .

    希望这有助于其他人 .

  • 0

    从.NET 4.0项目引用的NLog.dll 2.0也可能导致这种情况 .

  • 138

    在为winforms项目添加一些异步方法后,我遇到了同样的异常 . 我需要将我的.NET版本从4升到4.5

相关问题