ASP.NET 核心脚手架在 VS 2017 中不起作用

ASP.NET Core Scaffolding does not work in VS 2017

我在Visual Studio 2017年有一个初学者ASP.NET核心项目,目前处于HelloWorld的脚手架阶段。脚手架不起作用,我在第一台计算机上测试,然后在第二台计算机上测试...

当我尝试生成带有视图的控制器时 ,它在第一台机器上出现以下错误:

Microsoft Visual Studio


Error

There was an error running the selected code generator:

'Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.Web.CodeGeneration.Utils, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. at Microsoft.VisualStudio.Web.CodeGeneration.Design.Program.Main(String[] args)'


OK

在第二台机器上:

Microsoft Visual Studio


Error

There was an error running the selected code generator:

'Error: assembly specified in the dependencies manifest was not found -- package: 'microsoft.applicationinsights.aspnetcore', version: '2.1.0', path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll''


OK

使用来自控制台的命令清除本地 NuGet 缓存:

dotnet nuget locals all --clear

恢复所有包

安装(或更新)NuGet 包 Microsoft.CodeAnalysis.CSharp.Workspaces 版本 2.0.0(或更高版本)编辑:它接缝版本 2.3.0 和 2.3.1 导致一些问题。所以最多坚持使用 2.2.0,直到 MS 解决这个问题 (https://github.com/dotnet/roslyn/issues/20873)。

再次恢复所有包并尝试脚手架。

这对我有用。

确保您在项目中正确引用了这些包:

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

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

我的项目使用 Asp.Net Core 1.1.2VS2017 Community

以下适合我。

我删除了 binobj 文件夹,重新构建项目,它工作了。

万一出现错误:在 debug 文件夹中找不到 project.deps.json

将项目设置为调试,运行它,现在您可以添加脚手架项目。

我也有同样的情况。在 .net 核心版本 2.2 和 VS 2017 Enterprise 上。

下一条指令对我很有帮助:

  • 使用管理员权限打开 VS。
  • 加载解决方案到 VS
  • 从脚手架菜单添加控制器。 VS 将安装 'Microsoft.VisualStudio.Web.CodeGeneration.Design' 和 'Microsoft.VisualStudio.Web.CodeGeneration.Tools' 包。
  • 关闭VS
  • 打开 VS 并加载项目。通过 scaffloading 添加控制器工作正常

也许这条说明对某人有帮助, 谢谢。

您应该像 Microsoft.AspNetCore.App

的版本一样更改 Microsoft.VisualStudio.Web.CodeGeneration.Design 的版本

我试图 运行 安装了 asp.net 核心版本 3.0.0 的命令,所以我得到了同样的错误 命令:dotnet aspnet-codegenerator controller -name MoviesController -m Movie -dc MvcMovieContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries

错误: 脚手架失败。 无法加载文件或程序集 'Microsoft.VisualStudio.Web.CodeGeneration, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'。系统找不到指定的文件。

  • 解决方案:

dotnet nuget locals all --clear

dotnet 删除包 Microsoft.VisualStudio.Web.CodeGeneration.Utils

更改版本 2.2.0 的 PackageRefere

运行 再次执行命令。 dotnet aspnet-codegenerator 控制器-name MoviesController -m Movie -dc MvcMovieContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries

为了搜索者的利益:

我在 VS2019 中得到了这个。原因是我的代码被破坏了。

没有意识到为什么要开始,但是当你意识到代码生成是一个nuget包时;如果项目未构建,则 Visual Studio 无法获取该包。

编译代码后,这个错误就消失了。

解决方案:

  1. 转到 VS2019 --> 依赖项 --> 包
  2. 单击“管理 NuGet”
  3. 在搜索中输入“Microsoft.VisualStudio.Web.CodeGeneration.Utils” 或缺少的 Dll。
  4. 点击安装。
  5. 重建解决方案
  6. 然后添加脚手架项。 它有效..:-)

我通过使用 nuget 包管理器卸载所有 entity framework 包并再次使用相同版本重新安装来解决这个问题。

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.设计
  • Microsoft.EntityFrameworkCore.SqlServer

(3.10版本)

转到解决方案资源管理器 -> 清理解决方案然后构建解决方案

这对我有用。

我收到了不同的错误信息。实际上没有什么特别的,没有提到依赖项或程序集。我尝试了所有上述建议,但均未成功。然后我尝试让它创建一个新的 DbContext 而不是指定一个现有的。这解决了我的问题。

  1. 在菜单 --> 编译 --> 清理解决方案
  2. 在菜单上 --> 编译 --> 生成解决方案。

然后使用脚手架重复创建 crud。 这对我行得通。谢谢