Microsoft.VisualStudio.Web.CodeGeneration.Design nie został znaleziony przez narzędzie dotnet aspnet-codegenerator

Aug 16 2020

Właśnie stworzyłem aplikację MVC z dotnet new mvc --name test-project( netcoreapp3.1), bez żadnego dostępu do bazy danych i tożsamości, którą chciałbym dodać ręcznie w celu dostosowania. Następnie dodałem kilka pakietów, aby skorzystać z dotnet aspnet-codegeneratornarzędzia. Mój .csprojwygląd wygląda tak:

<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>

Jak widać, Microsoft.VisualStudio.Web.CodeGeneration.Designjest to pierwszy na liście. Jednak gdy próbuję uruchomić dowolny scaffolder z dotnet aspnet-codegeneratornarzędzia (np . dotnet aspnet-codegenerator identity -h:), otrzymuję następujący komunikat:

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

Nawet jeśli określę .csprojplik -pflagą, nadal otrzymuję tę samą wiadomość. Robiąc pewne badania, znalazłem ten problem w ich repozytorium, ale jest inaczej: OP próbował dodać szkielet do aplikacji .NET Core 3.0 przy użyciu wersji 3.1 szkieletu.

Używam dotnet 3.1.401 na Xubuntu 20.04.

jakieś pomysły? Z góry dziękuję.

EDYCJA 1 Niektórzy sugerowali, że byłoby to zbliżone do tego, co tutaj mamy , ale chodzi o to: wiem, do czego służy i faktycznie dodałem „narzędzia globalne” sugerowane w tym artykule. Problem polega na tym, że aspnet-codegeneratornie wykrywa, że ​​mam już bibliotekę, której potrzebuje do swoich rzeczy, dodaną do .csprojpliku.

EDYCJA 1

Wygląda na to, że kilka osób również boryka się z tym problemem, więc zgłosiłem problem do ich repozytorium

Odpowiedzi

1 Blondu Nov 21 2020 at 07:37

To już kilka miesięcy, ale ostatnio spotykałem się z tym we wszystkich moich projektach.

W przypadku, gdy ktoś inny wyląduje na tej stronie, rozwiązaniem w moim przypadku (MAC OS) było odinstalowanie i ponowne zainstalowanie dotnet-aspnet-codegenerator.

Uruchom w terminalu:

dotnet tool uninstall --global dotnet-aspnet-codegenerator

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

Powiązany temat tutaj