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

时间:2017-01-03 18:34:27

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

尝试使用带有Update 3的Visual Studio 15 Enterprise在ASP.NET Core项目中添加Controller时,出现以下错误:

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

13 个答案:

答案 0 :(得分:150)

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

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

答案 1 :(得分:8)

对于最新版本,在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"
  ]
}

答案 2 :(得分:6)

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

工具 - &gt; NuGet包管理器 - &gt;管理NuGet包以获得解决方案。

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

然后,在浏览标签中,搜索ng-keypress。安装它。对CodeGeneration.Tools执行相同操作。当您发现其他错误消息时,您应该能够在NuGet中找到任何缺少的包。

答案 3 :(得分: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

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

答案 4 :(得分:3)

将以下内容添加到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”版本匹配

答案 5 :(得分:2)

  1. 我必须将以下内容添加到我的CSProj文件中:
  2. &#13;
    &#13;
    <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>
    &#13;
    &#13;
    &#13;

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

    2. 我仍然收到一条错误,说它无法在MCD文件夹中找到某个文件,因此我必须将整个bin \ Debug \ netcoreapp1.1文件夹复制并粘贴到bin \ MCD \ Debug \中netcoreapp1.1

    3. 我跑了脚手架,它有效!

答案 6 :(得分:2)

我在Visual Studio Mac Community Edition 2017中遇到了同样的问题。在从项目目录运行scaffold命令之前,请确保该目录包含Program.csStartup.cs和{ {1}}个文件。如果没有,则将命令.csproj然后ls-al运行到项目目录中,该目录将位于当前项目目录中,然后执行cd命令。许多人忽略了一个明显的错误。

答案 7 :(得分:2)

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

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

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

答案 8 :(得分:1)

只需添加标记&#39; DotNetCliToolReference&#39; .csproj上的包和代码设计以及在根解决方案上执行code-generate命令。那对我有用。

<强>的.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> dotnet aspnet-codegenerator controller -name ProdutosController -m Produto -dc AppDataContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries

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

答案 9 :(得分:0)

对于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"
  ]
} 

答案 10 :(得分:0)

在Visual Studio代码中,更改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>

答案 11 :(得分:0)

我刚刚输入Linux:

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

因此,我不是从'dotnet'(我的当前版本:2.2.300)开始

我不喜欢这种解决方案,但它确实有效。

答案 12 :(得分:0)

在Windows 10上

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

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

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


要全局修复

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