【问题标题】:Mono.Cecil, Missing compiler required member 'System.Runtime.CompilerServices.ExtensionAttribute..ctor'Mono.Cecil,缺少编译器所需的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor”
【发布时间】:2011-05-20 04:40:16
【问题描述】:

我下载了最新的 Mono.Cecil,现在每当我启动我的项目时,它都会给我这个错误。如果我删除并添加 mono.cecil,它就会消失。但每次我打开我的项目时,这样做都很痛苦。

【问题讨论】:

  • 你的项目是monodevelop吗? VS的单声道工具?什么?

标签: c# mono mono.cecil


【解决方案1】:

对于所有想要在内部使用扩展方法并因此声明自己的内部 System.Runtime.CompilerServices.ExtensionAttribute 以允许这样做的 .NET 2.0 项目来说,这个问题是一个众所周知的问题。

解决这个问题有多种方法,如果您使用.NET 3.5 或更高版本,只需编译带有NET_3_5NET_4_0 定义的Mono.Cecil。如果您的目标是 .NET 2,您可能会很幸运并且可以直接编译(这取决于一些编译器内部,绝对不是 csc 命令行或 MSBuild)。如果没有,解决方法是从 2.0 Cecil 程序集(使用 Cecil 本身...)中删除所有出现的该属性(包括定义)。

我有already done this,这没什么大不了的。但是我觉得你的问题是另一个问题,所以请提供更多关于你正在使用/定位的 Mono 版本和 .NET 版本的详细信息。

【讨论】:

  • 好吧,我的项目是 .net 4,我将 mono.cecil 更改为 .net 4,以便为其添加一些扩展。将尝试添加该定义。
  • 刚刚注意到来自 mono.cecil 的警告。 "预定义类型 'System.Runtime.CompilerServices.ExtensionAttribute' 在多个程序集中定义在全局别名中;使用来自 'path' Mono.Cecil 的定义"
  • 如果您为 .NET 4 构建 Mono.Cecil 并定义了 NET_4_0 符号(可以在项目属性中设置),此错误将消失。见github.com/JohannesRudolph/cecil/blob/master/…
【解决方案2】:

我通过从我的项目中删除对“Mono.Cecil.dl”和“Mono.Reflection.dll”的引用来修复此错误。

这两个文件带有 db4o v8.0 (an object database),似乎不需要 db4o 在 Windows 7 x64 + .NET 4.0 下以基本的非优化模式运行。

【讨论】:

    【解决方案3】:

    我也面临同样的问题。错误 System.Runtime.CompilerServices.ExtensionAttribute..ctor

    我在我的项目中使用 Newtonsoft.Json.Net dll(reference)。我删除了对文件 Newtonsoft.Json.Net20.dll 的引用,并重新添加了它。在此之后我的解决方案再次构建。

    奇怪但真实...我的应用程序构建成功。

    Error when using extension methods in C#

    谢谢,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 2011-09-26
      • 2023-03-05
      相关资源
      最近更新 更多