Ошибка при использовании методов расширения в C # - PullRequest
56 голосов
/ 15 октября 2008

Я столкнулся с проблемой, которая заставляет меня думать, что есть ошибка в фреймворке 3.0. Когда я пытаюсь использовать методы расширения, я получаю следующую ошибку:

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

При использовании этого простого кода:

public static class StringUtils {
    static void TestExtension(this String targetString) {

    }
}

Единственный способ устранить эту ошибку компиляции - добавить следующий код:

namespace System.Runtime.CompilerServices {
    public class ExtensionAttribute : Attribute { }
}

Прошло несколько месяцев с тех пор, как я использовал методы расширений, но я почти уверен, что мне не пришлось этого делать. Кто-нибудь еще сталкивался с этой проблемой?

Ответы [ 16 ]

0 голосов
/ 26 ноября 2015

В моем случае причина была в неправильной версии NET20 Microsoft AntiXSSLibrary.dll. Заменил на NET35 - ошибка ушла.

0 голосов
/ 31 октября 2012

У меня была версия Elmah.Sandbox, которая предназначалась для .net 2.0 в существующем проекте .Net 4.0. Я добавил метод расширения в свой проект, и сборка завершилась неудачно с сообщением об ошибке «Требуется отсутствующий компилятор».

DLL Elmah.Sandbox был включен как часть ранней версии ElmahR. Как только это было удалено, это все построено снова.

0 голосов
/ 05 апреля 2011

Просто настройте свой проект VS на .NET Framework 3.5 и выше. Скорее всего, вы конвертировали свой проект из предыдущей версии.

0 голосов
/ 25 декабря 2008

Попробуйте: Project, Add Reference, найдите System Core 3.5.0.0 в списке и нажмите OK, чтобы добавить его.

0 голосов
/ 15 октября 2008

Случайно ли это проект веб-сайта? Попробуйте изменить целевой фреймворк с .NET 3.5 на более раннюю версию, а затем обратно на .NET 3.5.

0 голосов
/ 15 октября 2008

Расширения введены в C # 3.0, который, с другой стороны, был представлен в .NET 3.5, поэтому вы не можете использовать их в .NET 3.0 напрямую.

...