aspnet-codegenerator:没有可用的代码生成器,即使添加了 Microsoft.VisualStudio.Web.CodeGeneration.Design

Posted

技术标签:

【中文标题】aspnet-codegenerator:没有可用的代码生成器,即使添加了 Microsoft.VisualStudio.Web.CodeGeneration.Design【英文标题】:aspnet-codegenerator: No code generators available, Even after adding Microsoft.VisualStudio.Web.CodeGeneration.Design 【发布时间】:2020-12-14 10:51:54 【问题描述】:

无法使用 aspnet-codegenerator 生成脚手架,以下是我尝试过的:

    使用创建了一个 ASP.Net RazorPages 应用程序 dotnet new webapp

    做了dotnet build

    使用 dotnet-aspnet-codegenerator 安装

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

    dotnet aspnet-codegenerator --help

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

    添加步骤 4 中提到的包使用

    dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

    添加的包是:

    <ItemGroup> <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.4" /> </ItemGroup>

    又跑了:dotnet build

    最后一步

    dotnet aspnet-codegenerator --help

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

.Net core安装版本:3.1.401

操作系统:Ubuntu 20.04

【问题讨论】:

最初,我可以按预期使用这些代码生成器。但是,我将.NET Core SDK更新为3.1.401版本后,现在报“此项目中没有可用的代码生成器”。 很多人都会遇到同样的问题。 https://github.com/dotnet/Scaffolding/issues/1393 重复***.com/questions/63440962 【参考方案1】:

从 .net core 3.1.4 升级到 5.0.1 时遇到同样的问题。

我的解决方案:

    更新全局工具:
  dotnet tool install --global dotnet-aspnet-codegenerator
  dotnet tool update --global dotnet-aspnet-codegenerator
  dotnet tool install --global dotnet-ef
  dotnet tool update --global dotnet-ef
    添加/更新包链接
  dotnet remove package Microsoft.VisualStudio.Web.CodeGeneration.Design
  dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
  dotnet add package Microsoft.EntityFrameworkCore.Design
    将 .csproj 和 launch.json 文件中的字符串 netcoreapp3.1.4 替换为 net5.0 清除目录 bin 对象 重建项目 最终运行:
  dotnet aspnet-codegenerator --help

如果一切正常,它将显示可用的生成器。

【讨论】:

这在 web/github 的其余部分没有结果时起作用。谢谢朋友。【参考方案2】:

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

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

在终端运行:

dotnet tool uninstall --global dotnet-aspnet-codegenerator

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

【讨论】:

【参考方案3】:

this issue 中描述了此问题的根本原因,因为 .NET 代码需要一个不区分大小写的文件系统,但在 Linux 主机上会失败。

suggested workaround 将在 vfat 文件系统上临时挂载您的 ~/.nuget 目录。

为此创建一个包含文件系统的虚拟文件

dd if=/dev/zero of=/tmp/mynuget bs=1024k count=2000
mkfs.vfat /tmp/mynuget

然后挂载它

sudo mount -o uid=myuser,gid=myuser -t vfat /tmp/mynuget /home/myuser/.nuget

并使用它

dotnet restore
dotnet aspnet-codegenerator ...

【讨论】:

你会如何在 Mac OS 上做到这一点? @JonathanDaniel:据我所知,这种方法也应该适用于 MacOS。但我几乎没有使用 Apple 设备的经验。【参考方案4】:

我测试你的命令,当我这样做dotnet tool install --global dotnet-aspnet-codegenerator --version 3.1.4时,我可以得到

然后Ran dotnet aspnet-codegenerator --help,我收到与你相同的消息 No code generators are available in this project.Add Microsoft.VisualStudio.Web.CodeGeneration.Design package to the project as a NuGet, 但是当我执行以下操作时,我可以在没有消息的情况下运行:

我认为可能是包没有正确添加,您可以尝试删除并重新添加。

dotnet remove package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

【讨论】:

我也试过了。我猜你正在使用Windows。我已经更新了我在问题底部使用的操作系统。【参考方案5】:

我找到了解决这个问题的方法:

最新版本出现了一些问题,因此您必须通过在终端上编写以下命令来将 sdk 的版本降级到 3.1.3

sudo apt install dotnet-sdk-3.1=3.1.301-1

之后您需要安装以下内容:

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

之后,您需要在终端上添加正确的 Web.CodeGeneration.Design 包:

sudo apt install dotnet-sdk-3.1=3.1.301-1 dotnet tool install --global dotnet-aspnet-codegenerator --version 3.1.3

这对我有用!!

【讨论】:

以上是关于aspnet-codegenerator:没有可用的代码生成器,即使添加了 Microsoft.VisualStudio.Web.CodeGeneration.Design的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 没有可用软件包 libmcrypt

centos7nettools没有可用的软件包

避免在数据表中呈现“表中没有可用数据”

没有可用的来源..浏览以查找来源

国内都有哪些靠谱的 Javascript 库 CDN可用

没有可用的缓冲空间