";缺少编译器必需的成员“;错误被多次抛出,几乎没有对代码进行任何更改

本文关键字:几乎没有 代码 任何更 编译器 quot 错误 成员 | 更新日期: 2023-09-27 17:57:56

今天,在对我运行的C#MVC站点进行了一些更改后,我又进行了一些修改,并遇到了以下错误:

缺少编译器必需的成员System。运行时。编译器服务。扩展属性。。ctor

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

我没有在SO或谷歌上找到很多关于这个错误的信息,除了这个家伙的解决方案和一些Mono项目错误的参考(我没有使用Mono)。上面的家伙给出的解决方案需要添加一个类定义,允许编译器解析引用。我并不特别想这么做,因为到目前为止我还不需要这么做,这只会让我的代码变得一团糟。

只是好奇以前是否有人遇到过这种情况。

";缺少编译器必需的成员“;错误被多次抛出,几乎没有对代码进行任何更改

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

我不知道是否有其他人经历过这种情况,但在添加了一些使用dynamic类型的代码并将WebAPI合并到一个项目中后,我突然遇到了这个错误,该项目起源于VS2013中的TypeScript应用程序。只需添加对Microsoft的引用。CSharp解决了我的问题。

希望这能帮助其他人。

此错误通常意味着您的项目是根据编译的。NET 2.0,或者您没有引用正确版本的系统。Core.dll

关于一个几乎重复的问题,请参阅在C#中使用扩展方法时的错误

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

问题解决了!!!

实际错误来自于导致错误的2.0程序集包含以下代码:

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

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

我修复了这个

  • 通过在没有属性目标4.0的情况下再次编译原始2.0程序集
  • 通过移除组件(显然)
  • 通过在编译的目标中添加第三个扩展属性(它似乎否决了引用的定义)

在项目中的某个地方编写此代码可能会解决您的问题。它对我有效

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

可能使用了dynamic关键字In。NetStandard类库项目。如果是,则需要在项目中添加对Microsoft.CSharp库的引用。希望它能解决你的问题。

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

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

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

情况如下:

  • 我关闭构建的解决方案
  • 我再次打开解决方案。它仍在构建
  • 一旦我做出任何更改并尝试构建,我就会得到19个"缺少编译器必需的成员…"错误
  • 我删除了对GoogleSearchAPINet20的引用
  • 我添加回对GoogleSearchAPINet20的引用
  • 我构建了解决方案。它构建时没有错误
  • 现在,只要我的Visual Studio打开,我就可以使用解决方案正确地更改代码、构建或执行任何其他操作
  • 我关闭Visual Studio
  • 从第一步开始重复

我指的不是系统。Core.dll在我的解决方案中,我的目标框架是。NET 4。

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

在尝试使用异步任务时出错。NET 4.0。将目标框架更新到4.5.2解决了此问题。

在向winforms项目添加了一些异步方法后,我遇到了同样的一组异常。我需要撞一下我的。NET版本从4到4.5

对我来说,当我在.net4.0项目中添加异步方法和异步任务等待时,问题就出现了!

使用的早期版本。NET Framework 4.5,您必须安装此软件包:

Install-package Microsoft.Bcl.Async –pre

Install-Package Microsoft.CompilerServices.AsyncTargetingPack

更多关于Nuget或Nuget 的信息