ASP.NET Core Scaffolding在VS 2017中不起作用

时间:2017-07-17 08:23:21

标签: visual-studio visual-studio-2017 asp.net-mvc-scaffolding asp.net-core-1.1

我在Visual Studio 2017中有一个初学者ASP.NET Core项目,我正处于HelloWorld的脚手架步骤。 Scaffolding不起作用,我在第一台计算机上测试,然后在第二台计算机上测试......

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

  

Microsoft Visual Studio

           

错误

     

运行所选代码生成器时出错:

     

'未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集' Microsoft.VisualStudio.Web.CodeGeneration.Utils,Version = 1.1.1.0,Culture = neutral,PublicKeyToken = adb9793829ddae60&# 39 ;.该系统找不到指定的文件。      在Microsoft.VisualStudio.Web.CodeGeneration.Design.Program.Main(String [] args)'

           

好的

在第二台机器上:

  

Microsoft Visual Studio

           

错误

     

运行所选代码生成器时出错:

     

'错误:未找到依赖项清单中指定的程序集 - package:' microsoft.applicationinsights.aspnetcore',version:' 2.1.0',path: ' LIB / netstandard1.6 / Microsoft.ApplicationInsights.AspNetCore.dll''

           

好的

11 个答案:

答案 0 :(得分:4)

为了搜索者的利益:

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

没有意识到为什么要启动,但是当您意识到代码生成是一个nuget包时;如果项目无法生成,则Visual Studio无法访问该程序包。

一旦我编译了代码,这个错误就消失了。

答案 1 :(得分:3)

使用来自控制台的命令清除本地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

答案 2 :(得分:3)

以下适用于我。

我删除了bin&amp; obj个文件夹,再次构建项目并运行。

如果它给你错误:它在project.deps.json文件夹中找不到debug

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

答案 3 :(得分:2)

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

下一条指令对我有帮助:

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

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

答案 4 :(得分:2)

您应该完全像Microsoft.AspNetCore.App的版本一样更改Microsoft.VisualStudio.Web.CodeGeneration.Design的版本

答案 5 :(得分:1)

我通过使用 nuget 包管理器卸载所有实体框架包并再次使用相同版本重新安装来解决此问题。

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.SqlServer

(3.10 版本)

答案 6 :(得分:0)

我试图在安装了asp.net core 3.0.0版本的情况下运行以下命令,所以我遇到了相同的错误 命令:dotnet aspnet代码生成器控制器-name MoviesController -m Movie -dc MvcMovieContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries

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

  • 解决方案:

dotnet nuget locals全部-清除

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

更改版本2.2.0的PackageRefere

再次运行命令。 dotnet aspnet代码生成器控制器-名称MoviesController -m电影-dc MvcMovieContext --relativeFolderPath控制器--useDefaultLayout --referenceScriptLibraries

答案 7 :(得分:0)

解决方案:

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

答案 8 :(得分:0)

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

这对我有用。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

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