找不到与命令“dotnet-aspnet-codegenerator”匹配的可执行文件”

Posted

技术标签:

【中文标题】找不到与命令“dotnet-aspnet-codegenerator”匹配的可执行文件”【英文标题】:No executables found matching command 'dotnet-aspnet-codegenerator'" 【发布时间】:2017-01-03 18:34:27 【问题描述】:

当尝试使用带有 Update 3 的 Visual Studio 15 Enterprise 在 ASP.NET Core 项目中添加控制器时,我收到以下错误:

"The was an error running the selected code generator: No executables found matching command 'dotnet-aspnet-codegenerator'"

【问题讨论】:

【参考方案1】:

如果您使用的是 csproj (Visual Studio 2017) 而不是 project.json,那么您需要将以下内容添加到您的 csproj 文件中:

    <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
    </ItemGroup>

【讨论】:

当前 - 版本="1.0.0" @CountZero ,我有`Version="1.0.1"`如何最好地检查最新版本号?我可以使用 dotnet cli 本身安装此参考吗?当我尝试dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Tools 时,它创建了一个&lt;PackageReference&gt;,但我需要一个&lt;DotNetCliToolReference&gt;,因为johnnycardy 在这里回答...dotnet add package 的一个优点是(看起来?)它会找到并添加一个最新的元素版本属性,所以我只是从&lt;PackageReference&gt;手动转换 -> &lt;DotNetCliToolReference&gt; 看起来 1.0.1 是最新的,除非您使用的是预览版。 nuget.org/packages/… 如果这一行已经存在于 csproj 文件中并且我们仍然收到相同的错误怎么办?我在 VS 2017 中遇到了这个错误(截至日期安装的版本和最新更新) @SteveJohnson 谢谢。大声笑我发现这是问题所在(现在一切都是 2.0.0),并通过使用 cmd 的 dos cmd 提示符解决了仍然找不到代码生成器的问题。此处为未来读者提供详细信息:***.com/questions/47765196/…【参考方案2】:

对于最新版本,在 project.json 的依赖项下添加以下内容:

"Microsoft.VisualStudio.Web.CodeGeneration.Tools": 
  "version": "1.1.0-preview4-final",
  "type": "build"
,
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": 
  "type": "build",
  "version": "1.1.0-preview4-final"

以及工具下的以下内容:

"Microsoft.VisualStudio.Web.CodeGeneration.Tools": 
  "version": "1.1.0-preview4-final",
  "imports": [
    "portable-net45+win8"
  ]

【讨论】:

最新的asp.net核心版本没有“project.json”文件。【参考方案3】:

比将版本号复制到配置文件中更可靠的答案是使用 NuGet 来确保将包添加到您的项目中。

工具 -> NuGet 包管理器 -> 管理用于解决方案的 NuGet 包。

首先,更新所有内容。选择更新选项卡。选中全部更新复选框并运行几次。如果某些东西在您运行升级的前几次降级,请不要感到惊讶。某些依赖项似乎必须按顺序处理。我花了大约 5 次升级才能使所有内容都保持最新状态。

然后,在浏览选项卡中搜索CodeGeneration.Tools。安装它。对CodeGenerators.Mvc 执行相同的操作。当您发现其他错误消息时,您应该能够在 NuGet 中找到任何丢失的包。

【讨论】:

这是我尝试将CodeGeneration.Tools 安装到我的项目时看到的:Package 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.1' has a package type 'DotnetCliTool' that is not supported by project【参考方案4】:

如果您使用的是 Mac (OS X) 或任何受支持的 Linux 发行版,则必须运行:

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

此外,在 Mac 上,我添加到我的 .zshrc(或 bash 等效项)

export PATH=$HOME/.dotnet/tools:$PATH

我必须确保重新启动终端。

【讨论】:

在 Mint 19 中将 .dotnet/tools 添加到我的 PATH 解决了我的问题。【参考方案5】:

在 dotnet core 2.1.1 中,您预计情况已经改变,您可能不需要添加太多内容。很抱歉打扰您,但情况相同,您现在需要做的就是更新您希望使用的工具或软件包的版本。

 <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>

这对我有用。我希望它适用于卡在这里的其他人。请注意,关键引用是DotNetCliToolReference 而不是PackageReference

【讨论】:

【参考方案6】:

将以下内容添加到您的 project.json:

依赖项下:

"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": 
    "version": "1.0.0-preview2-final",
    "type": "build"

在工具下:

"Microsoft.VisualStudio.Web.CodeGeneration.Tools": 
    "version": "1.0.0-preview2-final",
    "imports": [
        "portable-net45+win8"
    ]

版本号可能会根据您在项目中使用的 .NET Core 版本而有所不同 您可能会收到另一个关于缺少 Microsoft.DotNet.InternalAbstractions 的错误,在这种情况下,您需要从 NuGet 获取 确保依赖项中的“Microsoft.VisualStudio.Web.CodeGeneration.Tools”版本与工具中的“Microsoft.VisualStudio.Web.CodeGeneration.Tools”版本匹配

【讨论】:

感谢您发布您的解决方案并具体描述不同用户的版本号变化等。它为我节省了大量时间。【参考方案7】:
    我必须将以下内容添加到我的 CSProj 文件中:

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild3-final" />
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0-msbuild3-final" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" />
</ItemGroup>

    添加后,我使用 nuget 包管理器安装了 CodeGenerators.Mvc。

    我仍然收到一条错误消息,提示它在 MCD 文件夹中找不到某些文件,因此我不得不将整个 bin\Debug\netcoreapp1.1 文件夹复制并粘贴到 bin\MCD\Debug\netcoreapp1 中。 1

我跑了脚手架,它成功了!

【讨论】:

【参考方案8】:

我在 Visual Studio Mac Community Edition 2017 中遇到了同样的问题。在从项目目录运行 scaffold 命令之前,请确保该目录具有 Program.csStartup.cs.csproj 文件。如果不是,则运行命令ls-al,然后运行cd 进入当前项目目录中的项目目录,然后执行scaffold 命令。一个被许多人忽视的明显错误。

【讨论】:

这是我的解决方案(你说得对,非常明显!哈哈)。我正在使用 JetBrains Rider (它有一个解决方案和单独的项目子文件夹)并遵循没有的 vscode 说明。一旦我跳入项目文件夹而不是它工作的解决方案。 Rider 将其终端默认为解决方案。 :)【参考方案9】:

只需在 .csproj 上添加标签“DotNetCliToolReference”并打包代码设计并在根解决方案上执行代码生成命令。这对我有用。

.csproj <ItemGroup> <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.3" /> </ItemGroup>

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

命令 PS C:\Users\miche\projetos\asp_net_core\crud&gt; dotnet aspnet-codegenerator controller -name ProdutosController -m Produto -dc AppDataContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries

添加包后不要忘记构建和恢复解决方案;)

【讨论】:

【参考方案10】:

对于 VS 2015,在 project.json 文件中 -

在依赖项下添加 -

"Microsoft.VisualStudio.Web.CodeGeneration.Tools": 
  "version": "1.0.0-preview2-final",
  "imports": [
    "portable-net45+win8"
  ]
,
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.0.0-preview2-final"

然后在工具下添加-

"Microsoft.VisualStudio.Web.CodeGeneration.Tools": 
  "version": "1.0.0-preview2-final",
  "imports": [
    "portable-net45+win8"
  ]
 

【讨论】:

【参考方案11】:

在 Visual Studio Code 中更改 yourproject.csproj

<pre>
<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.1.4" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.6" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" version= "2.1.0-preview1-final" />
    <PackageReference Include="Microsoft.Extensions.SecretManager.Tools" version= "2.0.2" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
  </ItemGroup>
  <ItemGroup>
  <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
  <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" version="2.1.0-preview1-final" />
  </ItemGroup>`enter code here`
</pre>

【讨论】:

pre 标签不存在【参考方案12】:

我刚刚在 Linux 中输入:

~/.dotnet/tools/dotnet-aspnet-codegenerator razorpage -m Movie -dc RazorPagesMovieContext -udl -outDir Pages/Movies --referenceScriptLibraries

所以,我没有从“dotnet”开始(我当前的版本:2.2.300)

我不喜欢这个解决方案,但它有效。

【讨论】:

【参考方案13】:

在 Windows 10 上

在我的情况下,安装程序将错误的路径添加到 Path 环境变量。 添加的路径指向程序下不存在的文件夹。它需要指向dotnet-aspnet-codegenerator.exe。 对我来说,正确的路径在我的用户文件夹中:~\.dotnet\tools

您可以通过运行检查是否添加了正确的路径:echo $env:Path 如果路径丢失或不正确,您只需将正确的路径添加到Path 系统环境变量即可。

您也许可以通过使用 PowerShell 设置本地变量来进行测试:$env:Path += ";C:\Users\&lt;YOUR_NAME_HERE&gt;\.dotnet\tools"但我还没有尝试过。


全局修复

    开始在 Windows 搜索中输入 Environment,您应该会看到 Control panel 选项到 Edit system environment variables。 点击右下角的Environment Variables...按钮。 在System variables 下找到并选择Path 变量,然后单击Edit。 检查dotnet-aspnet-codegenerator.exe的路径是否存在,如果没有,请单击New并添加它。 重新启动计算机。

【讨论】:

以上是关于找不到与命令“dotnet-aspnet-codegenerator”匹配的可执行文件”的主要内容,如果未能解决你的问题,请参考以下文章

终端:-bash:'别名:找不到命令

与 Jenkins 的错误集成 Allure 报告。找不到 allure 命令行 <null>

在CMD下用java命令出现“找不到或无法加载主类”问题

ubuntu 中的“flutter:找不到命令”

CentOS6.4系统配置ip时找不到setup命令

javac 命令出现 找不到文件 问题及解决办法