Невозможно определить класс или член, который использует "динамический", потому что компилятору нужен тип "System.Runtime.CompilerServices.DynamicAttribute"
Я пытаюсь запустить приложение .NET MVC на своем локальном компьютере, которое я получил от GitHub.
Когда я нажму на Visual Studio, все будет соответствовать, и откроется новое окно браузера с ошибкой:
CS1980: не может определить класс или член, который использует "динамический", потому что для компилятора нужен тип "System.Runtime.CompilerServices.DynamicAttribute"
В разделе компилятора в том же окне отображается следующая ошибка:
![введите описание изображения здесь]()
Я проверил google и этот, похоже, является той же ошибкой.
Этот парень сам использовал динамический тип, с другой стороны, я не использую динамический тип, это автоматически генерируется компилятором .NET, и я использую .net 4.5, который должен поддерживать динамику.
Я попытался применить одно и то же решение (изменение всех ссылок System.Core на 4.0)
но дело в том, что все они уже версии 4.0.
Есть ли у вас какие-либо идеи, как я могу это решить?
Ответы
Ответ 1
У меня была аналогичная ошибка в проекте, который я пытался выполнить. Попробуйте повторно настроить рамки проекта на версию или две, и как только вы найдете целевую версию, в которой вы не получите ошибку, перетащите ее обратно в версию, с которой у вас возникли проблемы.
Я получал ту же ошибку в проекте сайта, ориентированном на 4.6.2, который ссылался на некоторые старые библиотеки, перенаправил его обратно на 4.5.1 и устранил ошибку. Я сразу же перенаправил обратно на 4.6.2 и снова не сталкивался с ошибкой.
Ответ 2
Я получил эту ошибку внезапно через пару дней после обновления до VS2015.3, используя "традиционное" приложение MVC (не новое приложение .NET Core/vNext).
Оказывается, эта ошибка может быть полной красной селедкой.
Убедитесь, что:
- У вас нет других ошибок вообще
- Вы проверили окно вывода на наличие ошибок, которые не отображаются в окне "Выход".
- Убедитесь, что у вас нет противоречивых ссылок
В моем случае у меня была ошибка typescript, которая вызывала ошибку и по какой-то причине вызывала также эту странную "красную селедку".
![введите описание изображения здесь]()
Мое исправление заключалось в том, чтобы войти в файл .csproj
и обновить версию инструментов typescript до версии 1.8 (необходимо разгрузить проект и отредактировать вручную). Как я уже сказал, это не связано с ошибкой, но я упоминаю специфику, потому что кто-то другой может оказаться в той же самой проблеме.
Я считаю, что 1.7 не принимал "None" для модульной системы typescript, тогда как 1.8, следовательно, ошибка.
Ответ 3
У меня была такая же проблема, но ни один из ответов здесь не разрешил, но указал мне в правильном направлении. Я думаю, что я не обновлял версию .NET на своей машине до более новой. После установки я отбросил целевую структуру (как было предложено), перенацелил новую структуру и сделал несколько дополнительных вещей:
Я также сравнил свой проект с тем, который работал на 4.5, и сделал это:
- Открыл мой файл проекта и удалил все связанные с BCL элементы.
- Удалены все пакеты "BCL" в диспетчере пакетов NuGet для проекта (предположим, что не нужно переходить на 4.5 +...?)
- Удалена старая версия пакета
System.Net.Http
, которая по какой-то причине не обновилась (см. web.config - версии должны показывать oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"
).
- Необходимо перезапустить VS.
- Восстановить решение.
- Ошибка исчезла.;)
Еще одна вещь, которую я сделал для устранения некоторых других ошибок, заключалась в том, чтобы очистить кэш компонентов, удалив все файлы здесь:
C:\Users\{USERNAME}\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache\
[rant] В течение всего дня весь этот день отбрасывал весь день. Благодаря MS за кражу еще один день моей жизни, фиксируя бессмысленные проблемы, которых никогда не должно быть. Каждый раз, когда я обновляюсь, я всегда получаю замечательный сюрприз и прекрасную игру исправить красную селедку. Не помешало бы выявить эти конфликты для тех, кто модернизирует старые проекты? Возможно, лучшая ошибка, когда все идет не так? Я сомневаюсь, что это будет так сложно. Возможно, даже что-то вроде AsmSpy, но более продвинутое, встроенное в VS? [/Напыщенная]
Ответ 4
Добавлена ссылка на System.Dynamic.Runtime
сделала это для меня.