【问题标题】:No executables found matching command 'dotnet-aspnet-codegenerator'"找不到与命令“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'"

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc .net-core


    【解决方案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 提示符解决了仍然找不到代码生成器的问题。此处为未来读者提供详细信息:stackoverflow.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】:
      1. 我必须将以下内容添加到我的 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>
      1. 添加后,我使用 nuget 包管理器安装了 CodeGenerators.Mvc。

      2. 我仍然收到一条错误消息,提示它在 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"
              但我还没有尝试过。


              全局修复

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

              【讨论】:

                猜你喜欢
                • 2018-12-10
                • 2016-09-13
                • 1970-01-01
                • 2019-05-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-08-09
                相关资源
                最近更新 更多