2009-03-25 2 views
2

Я использую последнюю версию IKVM для «компиляции» файла Java .jar в .NET DLL. Все это работает нормально, и теперь я пытаюсь ссылаться на DLL в .NET 3.5 C#.IKVM и System.Core System.Runtime.CompilerServices.ExtensionAttribute

В моем проекте 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 "

Поскольку пространство имен такое же, как я могу получить это для компиляции с версией ExtensionAttribute System.Core (или как я могу это исправить)?

Благодаря

+0

Я получил вокруг этого, чтобы избавиться от всех моих методов расширения, но я все еще любопытно. Похоже, присутствие IKVM.Runtime.dll в любом проекте вызовет проблемы с методами расширения. –

ответ

1

Если цель .Net 2.0 вы можете создать только методы расширения, если вы определили этот атрибут себя. Это отлично работает, пока вы не перейдете на .Net 3.5.

Я не знаю «IKVM», но единственным реальным решением является попросить их удалить атрибут и целевой 3.5.

2

Обновление для IKVM 0.40.0.1 исправлено для меня.

0

У меня такая же проблема.

В моем случае проблема была в сборке Mono.Cecil.

Миграция из локальных ссылок на nuget, когда я добавляю ссылки NHibernate, пакет автоматически добавляет эту ссылку.

Эта ссылка была удалена и снова скомпилирован мой проект.

Вам нужно понять эту реализацию, чтобы решить свой вопрос. Одна из обеих сборок должна быть удалена.

Этот образ был взят из ILSpy (http://i.stack.imgur.com/Qyd5o.png)