IKVM和System.Core System.Runtime.CompilerServices.ExtensionAttribute

时间:2009-03-25 15:58:50

标签: c# .net extension-methods ikvm build-error

我正在使用最新版本的IKVM将Java .jar文件“编译”到.NET DLL中。一切正常,现在我正在尝试在.NET 3.5 C#项目中引用DLL。

在我的C#项目中,我创建了一个静态“StringExtensions”类,其中包含字符串的扩展方法。

出于某种原因,这似乎在昨天工作,但是今天,我在我的扩展课上遇到了构建错误(不知道昨天这是如何工作的......)。

Missing compiler required member System.Runtime.CompilerServices.ExtensionAttribute..ctor

还有构建警告:

The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\TEMP\IKVM.Runtime.dll'

我发现IKVM.Runtime.dll和System.Core.dll(3.5版)都有相同的类型:“System.Runtime.CompilerServices.ExtensionAttribute”

由于命名空间是相同的,如何使用System.Core版本的ExtensionAttribute进行编译(或者如何解决这个问题)?

由于

3 个答案:

答案 0 :(得分:2)

更新到IKVM 0.40.0.1为我解决了这个问题。

答案 1 :(得分:1)

如果您定位.Net 2.0,则只能自己定义此属性才能创建扩展方法。这很有效,直到你转到.Net 3.5。

我不知道“IKVM”,但唯一真正的解决方法是要求他们删除属性并定位3.5。

答案 2 :(得分:0)

我有同样的问题。

在我的情况下,问题是程序集Mono.Cecil。

从本地引用迁移到nuget,当我添加NHibernate引用时,包会自动添加此引用。

此参考已删除,并再次编译我的项目。

您需要了解此实施以解决您的问题。必须删除其中一个组件。

此图片来自ILSpy(http://i.stack.imgur.com/Qyd5o.png