Подтвердить что ты не робот

Невозможно определить класс или член, который использует "динамический", потому что компилятору нужен тип "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.

Есть ли у вас какие-либо идеи, как я могу это решить?

4b9b3361

Ответ 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 на своей машине до более новой. После установки я отбросил целевую структуру (как было предложено), перенацелил новую структуру и сделал несколько дополнительных вещей:

  • Переустановил ВСЕ пакеты, запустив их в диспетчере пакетов:

    update-package -reinstall

Я также сравнил свой проект с тем, который работал на 4.5, и сделал это:

  1. Открыл мой файл проекта и удалил все связанные с BCL элементы.
  2. Удалены все пакеты "BCL" в диспетчере пакетов NuGet для проекта (предположим, что не нужно переходить на 4.5 +...?)
  3. Удалена старая версия пакета System.Net.Http, которая по какой-то причине не обновилась (см. web.config - версии должны показывать oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0").
  4. Необходимо перезапустить VS.
  5. Восстановить решение.
  6. Ошибка исчезла.;)

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

C:\Users\{USERNAME}\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache\

[rant] В течение всего дня весь этот день отбрасывал весь день. Благодаря MS за кражу еще один день моей жизни, фиксируя бессмысленные проблемы, которых никогда не должно быть. Каждый раз, когда я обновляюсь, я всегда получаю замечательный сюрприз и прекрасную игру исправить красную селедку. Не помешало бы выявить эти конфликты для тех, кто модернизирует старые проекты? Возможно, лучшая ошибка, когда все идет не так? Я сомневаюсь, что это будет так сложно. Возможно, даже что-то вроде AsmSpy, но более продвинутое, встроенное в VS? [/Напыщенная]

Ответ 4

Добавлена ​​ссылка на System.Dynamic.Runtime сделала это для меня.