ASP.NET Core 脚手架在 VS 2017 中不起作用
Posted
技术标签:
【中文标题】ASP.NET Core 脚手架在 VS 2017 中不起作用【英文标题】:ASP.NET Core Scaffolding does not work in VS 2017 【发布时间】:2017-12-21 16:42:27 【问题描述】:我在 Visual Studio 2017 中有一个初学者 ASP.NET Core 项目,我正处于 HelloWorld 的脚手架步骤。脚手架不工作,我在第一台电脑上测试,然后在第二台电脑上......
当我尝试生成带有视图的控制器时 ,它在第一台机器上给出以下错误:
微软视觉工作室
错误
运行所选代码生成器时出错:
'未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.VisualStudio.Web.CodeGeneration.Utils,版本=1.1.1.0,Culture=neutral,PublicKeyToken=adb9793829ddae60'。该系统找不到指定的文件。 在 Microsoft.VisualStudio.Web.CodeGeneration.Design.Program.Main(String[] args)'
好的
在第二台机器上:
微软视觉工作室
错误
运行所选代码生成器时出错:
'错误:未找到依赖项清单中指定的程序集 -- 包:'microsoft.applicationinsights.aspnetcore',版本:'2.1.0',路径:'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore。 dll''
好的
【问题讨论】:
我的代码有错误。修好后运行顺畅。 (我的一个类是私有的,有一个活动方法) 别忘了安装 Microsoft.VisualStudio.Web.CodeGeneration.Utils。特别是如果你像我这样不熟悉这种东西。这就是为我解决的问题。 【参考方案1】:-
在菜单 --> 编译 --> 清理解决方案
在菜单 --> 编译 --> 构建解决方案。
然后使用脚手架重复创建 crud。 这对我行得通。谢谢
【讨论】:
【参考方案2】:我收到了不同的错误消息。实际上没有什么具体的,没有提到依赖项或程序集。我尝试了上述所有建议,但均未成功。然后我尝试让它创建一个新的 DbContext 而不是指定一个现有的。这解决了我的问题。
【讨论】:
【参考方案3】:转到解决方案资源管理器 -> 清理解决方案然后构建解决方案
这对我有用。
【讨论】:
【参考方案4】:我通过使用 nuget 包管理器卸载所有实体框架包并再次使用相同版本重新安装来解决此问题。
Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Design Microsoft.EntityFrameworkCore.SqlServer(3.10版本)
【讨论】:
【参考方案5】:解决方案:
-
转到 VS2019 --> 依赖项 -->包
点击管理 NuGet
在搜索类型“Microsoft.VisualStudio.Web.CodeGeneration.Utils”
或丢失的 Dll。
点击安装。
重建解决方案
然后添加脚手架项目。
它有效..:-)
【讨论】:
【参考方案6】:为了搜索者的利益:
我在 VS2019 中得到了这个。原因是我的代码被破坏了。
没有意识到为什么开始,但是当你意识到代码生成是一个nuget包时;如果项目未构建,则 Visual Studio 无法访问该包。
一旦我编译了代码,这个错误就消失了。
【讨论】:
【参考方案7】:我试图在安装了 3.0.0 版本的 asp.net 核心的情况下运行下面的命令,所以我得到了同样的错误 命令: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 controller -name MoviesController -m Movie -dc MvcMovieContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries
【讨论】:
【参考方案8】:您应该像 Microsoft.AspNetCore.App 的版本一样更改 Microsoft.VisualStudio.Web.CodeGeneration.Design 的版本
【讨论】:
在哪里做呢?【参考方案9】:以下对我有用。
我删除了bin
和obj
文件夹,再次构建项目,它就可以工作了。
如果它给你错误:它在debug
文件夹中找不到project.deps.json
。
将项目设置为debug,运行它,现在您可以添加脚手架项目了。
【讨论】:
【参考方案10】:我也有同样的情况。在 .net core 2.2 版和 VS 2017 Enterprise 上。
下一条指令对我有用:
以管理员权限打开 VS。 将解决方案加载到 VS 从脚手架菜单添加控制器。 VS 将安装“Microsoft.VisualStudio.Web.CodeGeneration.Design”和“Microsoft.VisualStudio.Web.CodeGeneration.Tools”包。 关闭VS 打开 VS 并加载项目。通过脚手架添加控制器工作正常也许这个指令对某人有帮助, 谢谢。
【讨论】:
【参考方案11】:使用控制台中的命令清除本地 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.2
和VS2017 Community
【讨论】:
我所做的是修复VS-2017安装(企业版)......现在脚手架工作了。Microsoft.VisualStudio.Web.CodeGeneration.Design
的预览版显然是随 VS 2019 Preview 3 一起安装的。将此包降级到 2.2.3
为我解决了这个问题。以上是关于ASP.NET Core 脚手架在 VS 2017 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章