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