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

问题描述 投票:60回答:12

尝试使用带有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'"

c# asp.net-core asp.net-core-mvc .net-core
12个回答
150
投票

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

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

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

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>

0
投票

我刚输入Linux:

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

所以,我没有从'dotnet'开始(我目前的版本:2.2.300)

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


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

6
投票

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

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

首先,让一切都是最新的。选择“更新”选项卡。选中“全部更新”复选框,然后运行几次。如果某些东西在升级前几次降级,请不要感到惊讶。某些依赖项似乎必须按顺序处理。我花了大约5次升级来获取最新信息。

然后,在浏览选项卡中,搜索CodeGeneration.Tools。安装它。为CodeGenerators.Mvc做同样的事情。当您发现其他错误消息时,您应该能够在NuGet中找到任何缺少的包。


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

我必须确保重启终端。


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”版本匹配

3
投票

在dotnet核心2.1.1中,您可能希望情况发生变化,您可能不需要添加太多内容。我很抱歉惹恼你,但情况是一样的,你现在需要做的就是更新你想要使用的工具或包的版本。

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

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


2
投票
  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中

我跑了脚手架,它工作了!


2
投票

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


1
投票

只需在.csproj上添加标签'DotNetCliToolReference'和包代码设计,并在root解决方案上执行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

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

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