dotnet aspnet-codegenerator 工具找不到 Microsoft.VisualStudio.Web.CodeGeneration.Design

问题描述 投票:0回答:3

我刚刚使用

dotnet new mvc --name test-project
(
netcoreapp3.1
) 创建了一个 MVC 应用程序,没有任何类型的数据库访问和身份,我想手动添加以用于自定义目的。然后我添加了一些包以便使用
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
),我收到以下消息:

此项目中没有可用的代码生成器。将 Microsoft.VisualStudio.Web.CodeGeneration.Design 包添加到项目中作为 NuGet 包引用。

即使我使用

.csproj
标志指定
-p
文件,我仍然收到相同的消息。 在进行一些研究时,我在他们的存储库中发现了 this 问题,但这是另一回事:OP 试图使用 3.1 脚手架版本将脚手架添加到 .NET Core 应用程序 3.0 中。

我在 Xubuntu 20.04 上使用 .NET 3.1.401。

有什么想法吗?预先感谢您。

编辑1 有些人建议这与我们的here很接近,但事实是:我知道它的作用,而且我实际上添加了该文章中建议的“全局工具”。问题是

aspnet-codegenerator
没有检测到我已经拥有它所需的库,并将其添加到
.csproj
文件中。

编辑2

显然,有几个人也面临这个问题,所以,我在他们的存储库上提交了一个问题

c# asp.net-core .net-core code-generation asp.net-core-scaffolding
3个回答
3
投票

正如存储库 maintainerissue 中提到的,我在上面的问题中提到,有此问题的人应该根据运行时/目标更新其包:

使用 dotnet tool update dotnet-aspnet-codegenerator -g --version 3.1.5/5.0.2,具体取决于您的目标是 .netcoreapp3.1 还是 net5.0。 [...] 您还需要更新 Microsoft.VisualStudio.Web.CodeGeneration.Design 包。


2
投票

这已经有几个月了,但我最近在我的所有项目中都遇到了它。

如果其他人登陆此页面,我的情况(MAC OS)的解决方案是卸载并重新安装

dotnet-aspnet-codegenerator

在终端中运行:

dotnet tool uninstall --global dotnet-aspnet-codegenerator

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

相关主题这里


0
投票

在这里,我的问题也不是@cesarlamann问题的一对一匹配,但也许可以帮助其他有类似错误的人。

我在项目的包管理器中卸载并重新安装了 Microsoft.VisualStudio.Web.CodeGeneration.Design NuGet 包。这样做引入了 CodeGenerator.Design 包并添加了 Microsoft.EntityFrameworkCore.Tools。这解决了我的问题。

我在使用 MS 教程“ASP.NET Core 中的 Razor Pages 入门”(.NET 7 版本)时遇到错误。我在尝试使用实体框架 (CRUD) 添加支架 Razor 页面时遇到错误。仔细研究后,我注意到项目文件有一个对 Microsoft.VisualStudio.Web.CodeGeneration.Design 的包引用,但它没有显示在项目包中。 Nuget 包管理器显示它已安装。我在 Nuget 包管理器中卸载并重新安装了它。这样做引入了 CodeGenerator.Design 包并添加了 Microsoft.EntityFrameworkCore.Tools。这两个包都已添加到项目的 Packages 文件夹中(预期),并添加到项目文件中。这解决了我的问题。

有趣的是,我无法在新的 Razor Pages 应用程序中重现该错误。

hth

© www.soinside.com 2019 - 2024. All rights reserved.