0

Я слежу за учебниками Core Core ASP.NET по адресу https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model. Я добираюсь до раздела Scaffolding a Controller, и я пытаюсь создать контроллер из моего контекста модели/базы данных. Однако, когда я следовать инструкциям, как описано в руководстве, я получаю эту ошибку:Можно ли использовать мой контроллер с помощью .NET CLI?

enter image description here

Я пытался восстановить пакеты NuGet и создать новый проект, но я все еще получаю ту же ошибку. Есть ли способ взломать контроллер с помощью .NET CLI? Я никогда не видел его раньше, поэтому я не знаю, как написать его сам.

Спасибо!

Редактировать: Я только что попробовал ответить @ Prafull8495 и модифицировал свой файл проекта, как он инструктировал. Выше ошибка больше не появляется, но теперь я удар что-то другое:

enter image description here

ответ

2

Для csproj на основе проекта ASP.NET ядро, вы должны были бы убедиться, что приведенные ниже ссылки присутствуют (Таргетинг 1.0.x версия ASP.NET Ядра)

<ItemGroup>  
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.0.0-msbuild3-final" /> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" /> 
</ItemGroup> 

(для проектов, ориентированных на версию 1.1.x в ASP.NET Ядра)

<ItemGroup>  
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0-msbuild3-final" /> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" /> 
</ItemGroup> 

Обратите внимание, что версии Microsoft.VisualStudio.Web.CodeGeneration.Tools пакет остается неизменным в обоих случаях.

Также убедитесь, что ниже пакет не упоминается в проекте в качестве PackageReference

  • Microsoft.VisualStudio.Web.CodeGenerators.Mvc
  • Microsoft.VisualStudio.Web.CodeGeneration.Tools
+0

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

+0

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

0

Если вы используете project.json, то следуйте этому подходу.

Для использования пакета Code Generator, сначала необходимо включить его в project.json как this-

"dependencies": { 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
    }, 
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
    } 
}, 
"tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
    "version": "1.0.0-preview2-final", 
    "imports": [ 
     "portable-net45+win8" 
    ] 
    } 
} 

Теперь вы можете восстановить пакеты с помощью dotnet restore команды. После того, как она будет завершена, вы можете эшафот контроллеры и представления с помощью следующей команды (или из Visual Studio, как показано в официальном руководстве) -

dotnet aspnet-codegenerator --project . controller -name HelloController -m Author -dc WebAPIDataContext 

выше команда будет генерировать контроллер с именем HelloController в корневом каталоге, и представления для параметров CRUD внутри папки Hello в папке Views. Обратите внимание, что команда над образцом поможет вам создать контроллер с чтением записи с использованием модели и EF. Без модели или dbcontext он создаст пустой контроллер. Вы можете использовать переключатель командной строки --help после параметра контроллера, чтобы получить больше опций о генераторе контроллера.

Смежные вопросы