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

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

Произошла ошибка при запуске выбранного генератора кода:
- Доступ к тропе!--1--> 'C:UsersXXXXXXXAppDataLocalTempSOMEGUIDEntityFramework.dll "отказано".

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

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

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

21 ответов


ошибка VS2013: произошла ошибка при запуске выбранного генератора кода: 'Конфигурация для типа' SolutionName.Модель.Salesorder, которая уже были добавлены ...'

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

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

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

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

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


проблема была с поврежденной сетью.каталог конфигурации и пакетов.

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

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

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

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

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

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


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

мой уровень доступа к данным имел Entity Framework v6.0.2 установленный с помощью NuGet, веб-проект не был установлен Entity Framework. При попытке создать контроллер веб-API с шаблоном Entity Framework Entity Framework устанавливается автоматически, но его более старая версия 6.0.0. Я был удивлен, увидев две версии Entity Framework, более новые в моем проекте уровня данных и более старые в моем веб-проекте. Однажды я удалил старую версию и установил более новую версию в веб-проекте, проблема ушла.


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

устранение:

  1. для каждого проекта в проекте решения - > свойства - >приложение: установите целевую платформу на .Net 4.5 (или что вам нужно).
  2. инструменты - > управление пакетом NuGet для решения. Найдите Установленную "Entity Framework". И нажмите кнопку Управление. Снимите флажок все проекты (обратите внимание на проекты, требующие EF). Теперь, повторно управлять EF и проверить, что проекты, которые вам нужны.
  3. очистить и перестроить решение.

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

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

финал Решение:

  1. открыть рабочую папку на жестком диске вашего решения.
  2. удалить все внутри папки BIN
  3. удалить все внутри папки OBJ
  4. чистое решение, перестроить решение, добавить контроллер через леса

вуаля! (для меня)


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

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


У меня точно такая же проблема. Впервые столкнулся с этим, следуя по курсу Pluralsight "данные родитель-потомок с EF, MVC, нокаутом, Ajax и проверкой".

Я использую MVC 5, EF 6.1.1 и framework 4.5.2.

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

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

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

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

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


ничто из вышеперечисленного не помогло мне.

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

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


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

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

что работало для нас (используя VS 2013 Express for Web на 64 бит Windows 7):

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

  1. сначала переключитесь на Debug / x86--используйте диспетчер конфигурации решения (щелкните правой кнопкой мыши) для всех проектов в вашем решении. (Debug / любой процессор также может работать).
  2. очистить решение.
  3. завершение работы Visual Studio. (не могу заставить его работать, если я пропущу этого).
  4. Открыть Visual Studio.
  5. откройте свое решение.
  6. построить решение.
  7. теперь попробуйте добавить элементы лесов; для нас это сработало на данный момент, мы больше не получили сообщение об ошибке, говорящее что-то о "была ошибка при запуске выбранного генератора кода".

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


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


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

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

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

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

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

не удалось получить метаданные для владельца.Модели.MainRecord'. Свойство
"NumTrainingPasses"не является строковым или байтовым массивом. Длина может быть настроен для свойств массива строк или байтов.


обычно это связано с форматом вашего веб-сайта.config

перестроить решение и поиск в разделе ошибки, сообщения вкладки. Если у вас возникли проблемы с веб.config вы увидите его там. Исправьте это и повторите попытку.

пример: у меня connectionstring вместо connectionString


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


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


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


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

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

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

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


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

  • MyArea
    | - Папка.cs (попытался создать здесь новый эшафот. Неудача.)

Я просто повторно выбрал свою область, и проблема ушла:

  • AyArea (Add => новый элемент ремонтины)

обратите внимание, что после генерации лесов вы попадете в место, где вы не сможете создайте новый помост без повторного выбора области сначала (по крайней мере, в VS 2013).


  • vs2013 обновления 4
  • ef 5.0.0
  • ibm db2connector 10.5 fp 5

изменить сети.конфигурационный файл как таковой: удален поставщик / ы из тега ef:

<entityFramework>
</entityFramework>

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

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

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


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

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

Мое Решение:
1.Прокомментируйте modelBuilder в своем классе контекста.
2.Чистое Решение, Перестроить Решение.
3.Добавить представление и контроллер через леса
4. Раскомментируйте в modelbuilder.

может быть, немного необычный, но он работал! (для меня)