Невозможно добавить представление с контроллера в VS 2015: "Произошла ошибка с запуском генератора кода"
Я следую видеоуроку, где мне требуется создать пустую ASP.NET Web
приложение с MVC
, используя Visual Studio 2015
, будучи новым для мира ASP.NET, я следую шаг за шагом.
Я получил свой проект хорошо, на следующем шаге, добавив представление из существующего Controller
, я получил ошибку сообщения, говоря:
Ошибка:
Произошла ошибка с запуском генератора кода: 'Недопустимый указатель (исключение из HRESULT: 0x80004003 (E_POINTER))'
Я решил проблему, нашел похожие проблемы, но ни одна из них не привела к ясному решению, некоторые аналогичные проблемы, выпущенные в предыдущей версии VisualStudio, но, как я уже сказал, не имеют четкого решения.
Чтобы прояснить, что я испытал, вот что я сделал шаг за шагом:
Выбрано веб-приложение ASP.NET:
![введите описание изображения здесь]()
Выбранный пустой шаблон с проверкой MVC:
![введите описание изображения здесь]()
Попробовал Add View
от контроллера:
![введите описание изображения здесь]()
Некоторые настройки...
![введите описание изображения здесь]()
Ошибка:
![введите здесь описание изображения]()
Что вызывает эта проблема и каково ее решение?
Обновление:
Оказывается, что даже пытаясь добавить "Просмотр вручную", я получаю ту же ошибку, добавление представления - все это невозможно!
Ответы
Ответ 1
Попробуйте очистить ComponentModelCache, кеш будет перестраиваться в следующий раз, когда запускается VS.
- Закрыть Visual Studio
- Удалить все в этой папке C:\Users\\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
- Перезапустить Visual Studio
14.0 для визуальной студии 2015. Это будет работать и для других версий.
Ответ 2
Выполните следующие шаги, чтобы добавить представление по-другому, чем обычный способ:
- 1) Откройте Visual studio.
- 2) Создайте/откройте свой проект.
- 3) Перейдите в Обозреватель решений.
- 4) Щелкните правой кнопкой мыши на целевой папке.
- 5) Из списка выберите Добавить.
- 6) Из списка дочерних элементов выберите Страница просмотра MVC или Страница просмотра MVC с макетом (Razor).
- 7) Если вы выберете второй вариант с предыдущего шага, вы должны выбрать страницу макета для своего вида из всплывающего окна.
- 8) Что это!
Если вы не можете открыть созданное представление, просто щелкните правой кнопкой мыши на файле вида, выберите Открыть с помощью и выберите редактор HTML (веб-форм), тогда хорошо,
Ответ 3
У меня возникла эта проблема с другим сообщением об ошибке "-1 выходит за пределы.."
Единственное, что сработало для меня, - это удалить проект из решения, щелкнув правой кнопкой мыши проект и выбрав "Удалить". Затем щелкните правой кнопкой мыши решение, добавьте существующий проект и выберите проект, чтобы загрузить его в решение.
После перезагрузки проекта я могу снова добавить представления.
Ответ 4
Предположим, вы используете datacontext в DLL, ну, это был мой случай, и я не знаю, почему у меня такая же ошибка, которую вы описываете, я решаю ее создание datacontextLocal в проекте backend. то я передаю Dbset в правильный datacontext и удаляю локальный (вы можете оставить его там, если хотите, может быть полезным в будущем
если вы готовы использовать его в локальном datacontext, создайте новый, а затем передайте Dbset в правильный
Ответ 5
У меня такая же ошибка, но в VS 2017, когда я создаю контроллер. Я сделал так же, как написал @sh.alawneh. Кроме того, я попытался сделать то, что написал @longday. Но это не сработало. Тогда я пытаюсь по-другому:
- Щелкните правой кнопкой мыши на целевой папке.
- Из списка выберите Добавить => Новый элемент.
Там я выбираю новый контроллер, и он работает нормально.
Может быть, я помогу кому-то.
Ответ 6
на всякий случай кого-то интересует - решение с чистым кешем не работает для меня. но мне удалось решить проблему, но деинсталлировать все .Net-структуры в системе, а затем установить их обратно один за другим.
Ответ 7
Я просто перезапустил свою визуальную студию, и это сработало.
Ответ 8
Попробуйте очистить ComponentModelCache,
1. Закройте Visual Studio
2. Удалите все в этой папке C:\Users\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
3. Перезагрузите Visual Studio
4. Проверьте еще раз
это также использовало VS2017, чтобы получить решение
Ответ 9
В ASP.NET Core проверьте, есть ли у вас пакет nuget Microsoft.VisualStudio.Web.CodeGeneration.Tools
и соответствует ли он вашей версии проекта.
Ответ 10
Я столкнулся с подобной проблемой, которая мешала генерации кода работать. По-видимому, мои метаданные имели неизвестные свойства или значения. Я должен признать, что я не пробовал все ответы здесь, но кто действительно хочет переустановить vs или загрузить любой из многочисленных используемых пакетов Nuget.
Очистка проекта сработала для меня (Build-> Clean Solution) Генератор использовал несколько устаревших двоичных файлов для построения контроллера и представлений. Очистка раствора удалила устаревшие двоичные файлы и вуаля.
Ответ 11
В настоящее время я пытаюсь ознакомиться с MVC 4. Я некоторое время разрабатывал MVC 5, но мне нужно знать MVC 4, чтобы подготовиться к сертификации MCSD. Я следую учебному пособию через Pluralsight, ориентированному на гораздо более старые версии Entity Framework и MVC (видео было выпущено в 2013 году!)
Я столкнулся с той же самой ошибкой 2 часа назад и рвал на себе волосы, пытаясь понять, что не так. К счастью, поскольку проект в этом уроке не имеет смысла, я смог сделать шаг назад в течение всего процесса, чтобы выяснить, что было причиной того, что объект ref не установил ошибку, и исправить ее.
То, что я обнаружил, было ошибкой в структуре моего фактического решения.
У меня был настроен веб-проект MVC ("ASP.NET Web Application (.NET Framework)"), но у меня также было 2 библиотеки классов, одна из которых содержала мой уровень доступа к данным, а другая - настройку домена для моделей, подключающихся к моей базе данных.,
Оба они были типа "Библиотека классов (.NET Standard)".
Проект MVC не понравился.
После того, как я создал новые проекты типа "Библиотека классов (.NET Framework)", скопировал все файлы из старых библиотек в новые и исправил ссылку на веб-проект MVC, повторная сборка и повтор позволили мне создать представление правильно.
Это может показаться очевидным исправлением: не помещайте проект.NET Standard вместе с проектом.NET Framework и ожидайте, что он будет работать нормально, но это может помочь другим решить эту проблему!
Ответ 12
Моя проблема заключалась в типах, используемых в модельном классе.
Используя Типы как это:
[NotMapped]
[Display(Name = "Image")]
public HttpPostedFileBase ImageUpload { get; set; }
[NotMapped]
[Display(Name = "Valid from")]
public Nullable<DateTime> Valid { get; set; }
[NotMapped]
[Display(Name = "Expires")]
public Nullable<DateTime> Expires { get; set; }
Больше не работает в генераторе кода. Мне пришлось удалить эти типы и строительные леса без них, а затем добавить их позже.
Это глупо, [NotMapped]
используется для работы при строительстве лесов.
Используйте базовые типы: int, string, byte и т.д. Без таких типов, как: DateTime, List, HttpPostedFileBase и т.д.
Ответ 13
Я тоже почесал голову этим, в моем случае я обнаружил, что в мой файл Web.config был добавлен дополнительный раздел. Комментирование этого и перестройка решили проблему, и теперь я смог добавить новый контроллер.
Ответ 14
C:\Users\{WindowsUser}\AppData\Local\Microsoft\VisualStudio\16.0_8183e7d1\ComponentModelCache
Удалить из этой папки для VS 2019....
Ответ 15
Простой перезапуск VS работал для меня. Я просто закрыл VS и перезапустил.
Ответ 16
Ни одно из этих решений не помогло мне. Я только что обновил Visual Studio (обновления были доступны), и вдруг он просто работает.