Microsoft.VisualStudio.Web.CodeGeneration.Design не обнаруживается инструментом dotnet aspnet-codegenerator

Aug 16 2020

Я только что создал приложение MVC с dotnet new mvc --name test-project( netcoreapp3.1) без какого-либо доступа к базе данных и удостоверений, которые я хотел бы добавить вручную для целей настройки. Затем я добавил несколько пакетов, чтобы использовать dotnet aspnet-codegeneratorинструмент. Мой .csprojвыглядит так:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>test_project</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.4" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.7" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="3.1.7" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.7" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.7">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.7">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.Design" Version="1.1.0" />
  </ItemGroup>
</Project>

Как видите, Microsoft.VisualStudio.Web.CodeGeneration.Designэто первое в списке. Однако, когда я пытаюсь запустить любой скаффолдер из dotnet aspnet-codegeneratorинструмента (например:) dotnet aspnet-codegenerator identity -h, я получаю следующее сообщение:

No code generators are available in this project.Add Microsoft.VisualStudio.Web.CodeGeneration.Design package to the project as a NuGet package reference.

Даже если я укажу .csprojфайл с -pфлагом, я все равно получу то же сообщение. Выполняя некоторые исследования, я обнаружил эту проблему в их репозитории, но это совсем другое: OP пытался добавить скаффолдер в .NET Core App 3.0, используя версию скаффолдера 3.1.

Я использую dotnet 3.1.401 на Xubuntu 20.04.

Есть предположения? Заранее спасибо.

РЕДАКТИРОВАТЬ 1 Некоторые люди предположили, что это было бы близко к тому, что мы имеем здесь , но дело в том, что я знаю, что он делает, и я фактически добавил «глобальные инструменты», предложенные в этой статье. Проблема в aspnet-codegeneratorтом, что я не обнаруживаю, что у меня уже есть библиотека, необходимая для его вещей, добавленная в .csprojфайл.

ИЗМЕНИТЬ 1

По- видимому, есть несколько людей , сталкивающихся этот вопрос, так что я подал вопрос об их репо

Ответы

1 Blondu Nov 21 2020 at 07:37

Этому уже несколько месяцев, но я недавно сталкивался с этим для всех своих проектов.

В случае, если кто-то еще попадет на эту страницу, в моем случае (MAC OS) решением было удалить и переустановить dotnet-aspnet-codegenerator.

Запускаем в терминале:

dotnet tool uninstall --global dotnet-aspnet-codegenerator

dotnet tool install --global dotnet-aspnet-codegenerator --version 3.1.4

Связанная тема здесь