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

"Произошла ошибка с запуском выбранного генератора кода" в лесах VS 2013

Я создаю новый вид модели.
Сообщение об ошибке, которое я получаю,

Ошибка
Произошла ошибка при запуске выбранного генератора кода:
'Доступ к пути
'C:\Users\XXXXXXX\AppData\Local\Temp\SOMEGUID\EntityFramework.dll' отказано '.

Я запускаю VS 2013 как администратор.

Я посмотрел на Является ли MvcScaffolding совместимым с VS 2013 RC по командной строке?, но это, похоже, не помогло решить проблему.

VS2013 С# 5 MVC5 Новый проект начался в VS 2013.

4b9b3361

Ответ 1

Проблема заключалась в повреждении каталога web.config и пакета.

Я создал новый проект и скопировал свои файлы кодов в новый рабочий проект, позже я вернулся и использовал diff для файлов конфигурации и diff в самом проекте.

Проблема заключалась в том, что обновления сильно загрузили мой файл конфигурации с множеством артефактов обновления, которые я закончил очисткой.

Вторая проблема заключалась в том, что старый проект также зависел от старых DLL, которые должны были быть уничтожены приложением пакета Nuget. Поэтому я уничтожил папки obj и bin, а затем папку пакета. После этого я смог восстановить старый проект и построить его чисто.

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

  • Возможно, пакет nuget имеет недостаток
  • Контроллер источника TFS заблокировал nuget от правильного обновления различных зависимостей.

С тех пор, прежде чем применять какие-либо обновления, я проверю все. Однако, поскольку я не обновлял EF через некоторое время, я не подтверждаю, что это разрешило проблему EF или леса.

Ответ 2

VS2013 Ошибка: произошла ошибка при запуске выбранного генератора кода: "Конфигурация для типа" SolutionName.Model.SalesOrder "уже был добавлен... '

У меня была эта проблема при работе через Pluralsight Course "Родительские данные с EF, MVC, Knockout, Ajax и Validation". Я пытался добавить Новый элемент леса с помощью шаблона MVC 5 Controller с представлениями, используя Entity Framework.

Класс контекста данных, который я использовал, включая переопределение метода OnModelCreating. Для переопределения требовалось добавить некоторые явные конфигурации столбцов базы данных, где значения по умолчанию EF были недостаточными. Это переопределение было простым, проработанным и отсутствием ошибок, но (как отмечено выше) это мешало генерации кода подсистемы Controller.

Решение, которое сработало для меня:

1 - я удалил (закомментировал) мое переопределение OnModelCreating и шаблон леса, заполненный без сообщений об ошибках, - мой код контроллера был сгенерирован, как ожидалось.

2 - Однако попытка создания проекта задохнулась, потому что "Модель изменилась". Поскольку мой код контроллера был теперь правильно сгенерирован, я восстановил (не комментировал) переопределение OnModelCreating и проект был создан и успешно запущен.

Ответ 3

Я смог решить эту проблему и немного лучше понял, что происходит. Самое приятное то, что я могу воссоздать проблему и исправить ее, чтобы быть уверенным в моем объяснении здесь. Решением было установить точно такую ​​же версию Entity Framework для проекта Data Access Layer и веб-проекта.

На моем уровне доступа к данным была установлена ​​платформа Entity Framework v6.0.2 с использованием NuGet, веб-проект не был установлен на платформе Entity Framework. При попытке создать контроллер веб-API с шаблоном Entity Framework Entity Framework устанавливается автоматически, но его старая версия 6.0.0. Я был удивлен, увидев, что две версии Entity Framework установлены, новее в моем проекте Data Layer и старше в моем веб-проекте. Однажды я удалил старую версию и установил новую версию в Web Project, проблема исчезла.

Ответ 4

Я проверил все мои проекты, и каждая из них имела ту же версию Entity Framework. В моем случае проблема заключалась в том, что один из моих проектов был нацелен на .Net 4.0, а остальные были .Net 4.5.

Решение:

  • Для каждого проекта в решении Project- > Properties- > Application: Установите Target Framework в .Net 4.5 (или что вам нужно).
  • Инструменты- > Управление пакетом NuGet для решения. Найти установленную "Entity Framework". Нажмите "Управление". Снимите отметку со всех проектов (обратите внимание на проекты, требующие EF). Теперь переустановите EF и проверьте, какие проекты вам нужны.
  • Очистить и восстановить решение.

Ответ 5

Я пробовал каждый ответ на каждом найденном мной сайте, и ничего не работало... до этого. Проводка поздно в случае, если кто-то вроде меня приходит и имеет тот же самый неприятный опыт, что и у меня.

Моя проблема была похожа на многие здесь, общее сообщение об ошибке при попытке использовать строительные леса, чтобы попытаться добавить новый контроллер (ef6, webapi). Сначала я смог использовать строительные леса примерно для 15 контроллеров, после чего он просто прекратил работать в один прекрасный день.

Окончательное решение:

  • Откройте свою рабочую папку на жестком диске для вашего решения.
  • Удалить все внутри папки BIN
  • Удалить все содержимое папки OBJ
  • Очистить решение, перестроить решение, добавить контроллер через строительные леса

Voila! (для меня)

Ответ 6

Обычно это вызвано недопустимым файлом Web.config. У меня была та же проблема, и оказалось, что я случайно поменял блок комментариев HTML <!-- --> на блок комментариев на стороне сервера @* *@ (через действие "Заменить все" ).

И если вы разрабатываете приложение WinForms, попробуйте посмотреть App.config.

Ответ 7

У меня такая же проблема. Сначала столкнулся с этим, следуя по курсу Pluralsight "Данные родительского ребенка с EF, MVC, Knockout, Ajax и Validation".

Я использую MVC 5, EF 6.1.1 и фреймворк 4.5.2.

Даже после обновления моего VS2013 до обновления 4 эта ошибка все еще сохраняется.

Была возможность обойти эту неприятную проблему, изменив DbSet на IDbSet внутри класса DbContext. Ответ был из здесь.

//From
public DbSet SalesOrders { get; set; }

//To
public IDbSet SalesOrders { get; set; }

Ответ 8

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

Ответ 9

Ничто из этого не помогло мне.

Я обнаружил, что причиной моей проблемы было переопределение OnModelCreating в моем классе контекста, из-за которого зависел элемент. Комментируя этот метод, тогда строительные леса работают.

Я бы хотел, чтобы Microsoft выпустила меньше багги.

Ответ 10

Для нас это имеет какое-то отношение к конфигурациям сборки, где у нас есть конфигурация сборки Debug | x64, с которой мы недавно переключились на использование, что, по-видимому, выглядело, когда строительные леса перестали работать.

(Я подозреваю, что есть по меньшей мере 10 разных вещей, которые могут вызвать это, о чем свидетельствуют различные ответы на SO, которые некоторые люди находят для них, но которые не работают для других, поэтому я не предлагая, чтобы мое решение работало для всех).

Что сработало для нас (с использованием VS 2013 Express для Интернета на 64-битной Windows 7):

Он (строительные леса) НЕ работал в конфигурации Debug | x64 Build. Но делать следующее (и кажется, что каждый шаг необходим - не мог понять, как это сделать более оптимизированным образом), кажется, работает для нас.

  • Сначала переключитесь на Debug | x86 - используйте Solution (щелкните правой кнопкой мыши) Configuration Manager для всех проектов вашего решения. (Отладка | Любой процессор также может работать).
  • Очистите ваше решение.
  • Завершить работу Visual Studio. (не могу заставить его работать, если я пропущу это).
  • Откройте Visual Studio.
  • Откройте свое решение.
  • Создайте свое решение.
  • Теперь попробуйте добавить элементы леса; для нас это сработало в этот момент, мы больше не получили сообщение об ошибке, говорящее о том, что "произошла ошибка, выполняемая генератором выделенного кода".

Если вам нужно переключиться на конфигурацию незагружаемой сборки, вы можете сделать это, после того, как вы поднимете все, что вам нужно на данный момент. Мы вернулись к нашему Debug | x64 после строительных лесов, что нам нужно.

Ответ 11

Я видел эту ошибку с новым проектом MVC5 при ссылке на модель из другого проекта. Проверка пути, EntityFramework.dll действительно существует. Это было только для чтения. Монитор процесса показал, что произошла ошибка при попытке удалить файл. Установка EntityFramework.dll в папке моих пакетов (копия, хранящаяся в исходном элементе управления) для записи, обходилась вокруг этой ошибки, но привела еще одну, заявив, что она не может загрузить сборку EntityFramework, потому что она не соответствует той, на которую ссылаются. Мой класс модели был определен в другом проекте, который использовал более старую версию инфраструктуры сущности. Проект MVC5 ссылался на EF 6, в то время как модель была из проектных ссылок EF 4.4. Модернизация до EF 6 в проекте модели исправила его для меня.

Ответ 12

У меня возникла эта проблема при попытке добавить Api Controller в мое веб-приложение MVC ASP.NET по совершенно другой причине, чем другие ответы. Я случайно включил атрибут StringLength с объявлением IndexAttribute для свойства integer из-за операции копирования и вставки:

[Index]
[IndexAttribute("NumTrainingPasses", 0), StringLength(50)]
public int NumTrainingPasses { get; set; }

Как только я избавился от объявления IndexAttribute, я смог добавить Api Controller для модели, содержащей свойство оскорбления (NumTrainingPasses).

Чтобы помочь поисковым системам, вот полное сообщение об ошибке, которое я получил до того, как я исправил проблему:

Произошла ошибка с запуском генератора кода:

Невозможно получить метаданные для "Owner.Models.MainRecord". Недвижимость | "NumTrainingPasses" не является массивом String или Byte. Длина может быть равна настроен для свойств массива String или Byte.

Ответ 13

Это обычно связано с форматом вашего Web.config

Восстановите решение и найдите в разделе Ошибки, вкладка Сообщения. Если у вас есть проблемы с форматом с помощью web.config, вы увидите его там. Исправьте его и повторите попытку.

Пример: у меня был connectionstring вместо connectionstring

Ответ 14

В случае, если это кому-то помогает, я переименовал пространство имен, в котором находилась модель, затем перестроил проект, затем переименовал его обратно и перестроил, а затем он сработал.

Ответ 15

Реконструкция решения работает для меня. перед восстановлением я нахожу ссылки на номер моего "ApplicationDbContext" равным нулю, что невозможно, поэтому переустановите решение, теперь все в порядке.

Ответ 16

Я часто сталкиваюсь с этой ошибкой, работая с MVC5 и EF, когда создаю модели и контексты в отдельном проекте (уровень доступа к данным), и я забываю добавить строку контекстного подключения к проекту MVC Web.Config.

Ответ 17

У меня также есть эта проблема с MSVS2013 Update 4 и EF 6.0 Сообщение, которое я получал, было:

    there was an error running the selected code generator.
A configuration for type XXXX has already been added ...[]

У меня есть модель с 10 классами. Я без каких-либо проблем набросал элементы в начале проекта.

Через несколько дней, добавив функциональность, я попытался выставить еще один класс из модели, но ошибка не позволяла мне это делать.

Я попытался обновить MSVS от обновления 2 до обновления 4, закомментировать мой метод OnModelCreating и другие идеи, предложенные без везения.

Как временный способ продолжить проект, я создал другой проект asp.net, на который были вставлены мои классы моделей (я использую свободно api, поэтому на них мало комментариев) и успешно создал мой контроллер и представления.

После этого я вставил созданные классы в исходный проект и исправил некоторые ошибки (в основном имена dbset).

Кажется, что работает, хотя я полагаю, что все равно найду ошибки, связанные с отношениями между классами (из-за отсутствия свободной конфигурации при создании).

Я надеюсь, что это поможет другим пользователям.

Ответ 18

Это случилось со мной, когда я попытался создать новый эшафот за пределами папки верхнего уровня для данного Area.

  • MyArea
     | - File.cs(попытался создать новый эшафот здесь. Ошибка.)

Я просто переустановил область и проблема исчезла:

  • AyArea (Добавить = > новый элемент леса)

Обратите внимание, что после создания эшафотов вы попадаете в место, где вы не сможете создать новый эшафот без повторного выбора области сначала (по крайней мере, в VS 2013).

Ответ 19

  • vs2013 update 4
  • ef 5.0.0
  • ibm db2connector 10.5 fp 5

измените файл web.config следующим образом: удалил провайдера из ef-тега:

<entityFramework>
</entityFramework>

добавлены теги строки подключения в разделах конфигурации:

</configSections>
<connectionStrings>
<add name=".." connectionString="..." providerName="System.Data.EntityClient" />
</connectionStrings>

Ответ 20

У меня была такая же проблема, когда в моем MVC app EF reference property (в окне свойств) "Конкретная версия" была отмечена как False и в моем другом проекте (содержащем DBContext и models), который был переопределен из приложения MVC, что свойство ссылки EF был отмечен как "Истина". Когда я обозначил это как False, все было в порядке.

Ответ 21

Я знаю, что я опаздываю, но это было так расстраивать, поэтому я надеюсь, что это может немного помочь...

Моя проблема была похожа на много опыта здесь, общее сообщение об ошибке при попытке добавить новое представление или использовать строительные леса для добавления нового контроллера.
Я узнал, что mvc 5 и ef 6 modelbuilder не очень хорошие друзья:

Мое решение:
1.Комментируйте модельBuilder в своем классе Context.
Решение 2.Clean, решение для перестройки.
3.Add view и Controller через строительные леса
4. Uncomment modelbuilder.

Может быть, немного нетрадиционным - но это сработало! (для меня)

Ответ 22

У меня была эта проблема в VS 2017. У меня была цель Platform (в свойствах проекта> Build> General), установленная на "x64". Scaffolding начал работать после изменения его на "Любой процессор".