Сегодня, после развертывания некоторых изменений на сайте C # MVC, который я запускаю, я вернулся, чтобы внести еще несколько изменений, и наткнулся на эту ошибку:
Отсутствует обязательный член компилятора System.Runtime.CompilerServices.ExtensionAttribute..ctor
Ошибка немного расплывчата (кроме описания, очевидно), поскольку она не дает мне ссылки на файл, строку или столбец, а только на проект. Кроме того, он выдает ошибку 20 раз. Я внес только три изменения в код между моментом развертывания (в то время он был полностью функциональным) и сейчас. Я отменил свои изменения, и он по-прежнему выдает ту же ошибку, которая для меня не имеет смысла.
Я не нашел много информации об этой ошибке в SO или Google, кроме решения этого парня и пары ссылок на некоторые ошибки проекта Mono (я не использую Mono). Решение, приведенное выше, требует добавления определения класса, который позволит компилятору разрешить ссылку. Я не особо хочу этого делать, потому что до этого момента мне не нужно было этого делать, и это просто запутает мой код.
Просто любопытно, сталкивался ли кто с этим раньше. Заранее спасибо!
источник
Ответы:
Эта ошибка обычно означает, что ваш проект компилируется с .NET 2.0 или вы не ссылаетесь на правильную версию System.Core.dll.
Ответ на почти повторяющийся вопрос см. В разделе Ошибка при использовании методов расширения в C #.
источник
В моем случае это было потому, что на проект не ссылались
Microsoft.CSharp
. Как только я добавил ссылку на эту сборку, она скомпилировалась отлично.источник
Я не знаю, сталкивался ли с этим кто-нибудь еще, но я внезапно столкнулся с этой ошибкой после добавления кода, использующего
dynamic
типы, и включения WebAPI в проект, который возник как приложение TypeScript в VS2013. Простое добавление ссылки на Microsoft.CSharp решило мою проблему.Надеюсь, это поможет кому-то другому.
источник
Я сегодня тоже столкнулся с этой ситуацией. В моем случае я ссылался на dll Newton.Json.Net 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) содержит тот же класс в том же пространстве имен.
Я исправил это
источник
Написание этого кода где-нибудь в вашем проекте может решить вашу проблему. Меня устраивает
namespace System.Runtime.CompilerServices { public class ExtensionAttribute : Attribute { } }
источник
NLog.dll 2.0, на который ссылается проект .NET 4.0, тоже может вызвать это.
источник
Вероятно, вы используете
dynamic
ключевое слово в проекте библиотеки классов .NetStandard. Если это так, вам необходимо добавить ссылку наMicrosoft.CSharp
библиотеку в проекте. Надеюсь, это решит вашу проблему.источник
У меня нет правильного решения, но я добавлю свои данные:
В моем случае ошибка вызвана ссылкой на GoogleSearchAPINet20
Вот что происходит:
Я вообще не ссылаюсь на System.Core.dll в своем решении, и моя целевая платформа - .NET 4.
Меня это немного раздражает ...
источник
Получил эту ошибку при попытке использовать асинхронные задачи против .NET 4.0. Обновление Target Framework до 4.5.2 устранило проблему.
источник
Я попал в тот же набор исключений после того, как добавил некоторые асинхронные методы в проект winforms. Мне нужно было поднять версию .NET с 4 до 4.5.
источник
Для меня проблема возникает, когда я добавляю асинхронный метод с async Task await в свой проект .net4.0!
В предыдущих версиях .NET-Framework 4.5 необходимо установить этот пакет:
или
больше информации о Nuget или Nuget
источник