Произошла ошибка при запуске выбранного генератора кода:
Я установил VS 2019 на свои окна 10. Создан базовый веб-проект ASP.net -> Выбранный API. Когда я пытаюсь создать контроллер, ссылающийся на модель и создавший класс контекста, он не генерирует класс контроллера, но выдает следующую ошибку:
Ошибка, произошла ошибка при запуске выбранного генератора кода
'Необработанное исключение. System.IO.FileNotFoundException: не удалось загрузить файл или сборку Microsoft.VisualStudio.Web.CodeGeneration.Utils, Version=3.1.2.0, Culture= нейтральный, PublicKeyToken=adb9793829ddae60. Система не может найти указанный файл. Имя файла: 'Microsoft.VisualStudio.Web.CodeGeneration.Utils, Version=3.1.2.0, Culture= нейтральный, PublicKeyToken=adb9793829ddae60' в Microsoft.VisualStudio.Web.CodeGeneration.Design.Program.Main(String[] args)
13 ответов
У меня тоже была эта проблема, но следующий ответ сработал для меня. Выберите "Управление пакетами Nuget" и установите эти пакеты.
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration" Version="3.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.2" ExcludeAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Utils" Version="3.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Version="3.1.2" />
Чтобы решить эту проблему, вы можете щелкнуть проект правой кнопкой мыши и выбрать "Управление пакетами Nuget".
Затем найдите Microsoft.VisualStudio.Web.CodeGeneratio.Utils, затем установите его.
После установки вышеуказанного он генерируется без ошибок.
Пожалуйста, проверьте, все ли у вас включены в совместимую версию. Это может произойти, если у вас есть пакеты разных версий, одна из которых не поддерживает текущую функциональность / тип проекта.
Сначала проверьте свой файл csproj. Нет ссылки на пакет для Microsoft.VisualStudio.Web.CodeGeneration.Utils, Version=3.1.2.0. Вот почему появляется сообщение об ошибке "Не удалось загрузить файл или сборку". Легко решить. https://www.nuget.org/packages/Microsoft.VisualStudio.Web.CodeGeneration.Utils/ Перейдите в консоль диспетчера пакетов и установите его.
В моем решении был проект .Data и еще один проект .API. Контроллер действий с автоматическим формированием шаблонов пытался добавить Microsoft.VisualStudio.Web.CodeGeneration.Design до версии v5.0.2 . Мне пришлось понизить все мои пакеты nuget до 5.0.2 следующим образом:
- Проект данных:
- проект API
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.2"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.2"> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.2" />
Затем контроллер действий API с EF core dbcontext смог успешно добавить:
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="5.0.2" />
Надеюсь, это поможет! Всего наилучшего.
Как бы то ни было, у меня сработало приведенное ниже решение.
Моя настройка: Во-первых, настройка моего проекта была другой. У меня были MyProject.Data и MyProject, и я пытался добавить «Контроллер API с действиями, используя Entity Framework» в свою папку API в MyProject, и я получал указанную ошибку. Я использовал .net 3.1.
Решение: мне пришлось отказаться от всех нижеперечисленных пакетов nuget, установленных в проекте MyProject.Data.
Before downgrade:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.2">
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.2">
After downgrade:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.11">
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.11">
Затем попытался снова использовать строительные леса, и это сработало !!
После создания каркаса MyProject установил следующие версии пакета nuget:
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.11"/>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.4" />
Основная проблема заключалась в том, что не отображалось никаких ошибок, кроме той, которая отображается в диалоговом окне или даже не указывает нам на какие-либо журналы или какую-либо полезную документацию. Если кто-нибудь найдет его, приложите его к этому ответу. Это было очень неприятно, и это почти съело полдня моих выходных :(
Надеюсь, это кому-то поможет. Удачного кодирования !!
В моем решении было 5 проектов (2 библиотеки DLL, веб-сервис, db и MVC). Я удалил все, кроме проекта MVC, и проблема исчезла. Добавил все проекты обратно, и проблема не вернулась. Сравнение старого файла решения с новым показало множество изменений, трудно сказать, какое изменение было исправлением, но файл решения намного чище.
В моем случае я обновляю зависимости только для той же версии, и это работает :)
Я просто обновляю все пакеты NuGet, установленные в моем проекте, и он работает отлично.
Проверьте и посмотрите, есть ли у вас какие-либо предупреждения о типах, допускающих значение NULL. Если вы это сделаете, вы можете обновить свой «ProjectName».csproj и удалить строку: включить сборку проекта и повторить попытку.
Я тоже столкнулся с той же проблемой. Это проблема с разными версиями пакетов NuGet. просто попробуйте использовать похожие версии пакетов.
Microsoft.VisualStudio.Web.CodeGeneration.Utils(5.0.2)Microsoft.VisualStudio.Web.CodeGeneration.Design(5.0.2)
У меня было аналогичное поведение, но с другой версией пакета: "Microsoft.VisualStudio.Web.CodeGeneration.Utils, Version=3.1.4.0". Пакет уже установлен (как в "Управлении пакетами NUGet", так и в файле.csproj). Я удалил его из управления пакетами NUGet и переустановил. Это решило мою проблему.
У меня была аналогичная ошибка во время входа в систему ovveride Identity и макета регистрации. Я удалил все пакеты из Application.Web и снова установил. Мои переустановленные библиотеки из пакетов NuGet:
Microsoft.AspNetCore.Authentication.Google
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.AspNetCore.Identity.UI
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration.Design