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

时间:2020-04-26 14:14:25

标签: c# asp.net-core asp.net-core-scaffolding visual-studio-2019

我已经在Windows 10上安装了VS 2019。 创建了ASP.net Core Web项目->选定的API。 当我尝试生成引用模型的控制器并创建上下文类时, 它没有生成控制器类,但给了我以下错误:

错误, 运行选定的代码生成器时发生错误

'未处理的异常。 System.IO.FileNotFoundException:无法加载 文件或程序集“ Microsoft.VisualStudio.Web.CodeGeneration.Utils, 版本= 3.1.2.0,文化=中性,PublicKeyToken = adb9793829ddae60'。 该系统找不到指定的文件。文档名称: 'Microsoft.VisualStudio.Web.CodeGeneration.Utils,版本= 3.1.2.0, 文化=中立,PublicKeyToken = adb9793829ddae60'位于 Microsoft.VisualStudio.Web.CodeGeneration.Design.Program.Main(String [] args)

10 个答案:

答案 0 :(得分:4)

我也有这个问题,但是下面的答案对我有用。 选择“管理Nuget软件包”并安装这些软件包

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration" Version="3.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.2" ExcludeAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Utils" Version="3.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Version="3.1.2" />

答案 1 :(得分:1)

要解决此问题,可以右键单击项目,然后选择“管理Nuget程序包”。

下一步,搜索Microsoft.VisualStudio.Web.CodeGeneratio.Utils,然后安装它。

安装完以上文件后,它会正确生成。

答案 2 :(得分:1)

首先,检查您的csproj文件。没有Microsoft.VisualStudio.Web.CodeGeneration.Utils版本= 3.1.2.0的程序包引用。这就是为什么错误消息显示“无法加载文件或程序集”的原因。容易解决。 https://www.nuget.org/packages/Microsoft.VisualStudio.Web.CodeGeneration.Utils/ 转到程序包管理器控制台进行安装。

答案 3 :(得分:0)

我的行为类似,但是包的版本不同:“ Microsoft.VisualStudio.Web.CodeGeneration.Utils,版本= 3.1.4.0”。 该软件包已安装(在“管理NUGet软件包”中以及.csproj文件中)。我从Manage NUGet Packages卸载了它,然后重新安装了。 那解决了我的问题。

答案 4 :(得分:0)

请检查您是否拥有兼容版本的所有软件包。当您拥有不同版本的包时,可能会发生这种情况,其中一个版本不支持当前的功能/项目类型。

答案 5 :(得分:0)

就其价值而言,以下解决方案对我有用。

我的设置: 首先,我的项目设置是不同的。我有一个 MyProject.Data 和 MyProject,我试图将“带有操作的 API 控制器,使用实体框架”搭建到 MyProject 中的 API 文件夹中,但我收到了有问题的错误。我使用的是 .net 3.1。

解决办法: 我不得不降级安装在 MyProject.Data 项目上的所有以下 nuget 包

Before downgrade:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.2">
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.2">


 After downgrade:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.11">
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.11">

然后再次尝试使用脚手架,效果很好!!

在搭建 MyProject 后,安装了以下 nuget 包版本:

<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.11"/>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.4" /> 

主要问题是除了对话框上显示的错误,甚至没有向我们指出任何日志或任何有用的文档之外,没有显示任何错误。如果有人找到,请将其附加到此答案中。这非常令人沮丧,这几乎耗尽了我周末的半天时间:(

希望对某人有所帮助。快乐编码!!

答案 6 :(得分:0)

我也遇到了同样的问题。这是不同版本的 NuGet 包的问题。尝试使用类似版本的软件包。

Microsoft.VisualStudio.Web.CodeGeneration.Utils(5.0.2) Microsoft.VisualStudio.Web.CodeGeneration.Design(5.0.2)

答案 7 :(得分:0)

我在 ovveride Identity 登录和注册布局期间遇到了类似的错误。 我确实从 Application.Web 卸载了所有包并重新安装。 我从 NuGet 包重新安装库:

Microsoft.AspNetCore.Authentication.Google
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.AspNetCore.Identity.UI
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration.Design

答案 8 :(得分:0)

我的解决方案中有一个 .Data 项目和另一个 .API 项目。自动脚手架操作控制器尝试添加 Microsoft.VisualStudio.Web.CodeGeneration.Design,它升级到 v5.0.2。我不得不将我所有的 nuget 包降级到 5.0.2,如下所示:

数据项目

<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.2">
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.2">
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.2" />

API 项目

<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.2">
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.2">
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.2" />

具有 EF 核心 dbcontext 的 API 操作控制器随后能够成功添加:

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

我希望这会有所帮助!一切顺利。

答案 9 :(得分:0)

我的解决方案有 5 个项目(2 个 dll、webservice、db 和 MVC)。我删除了 MVC 项目以外的所有项目,问题就解决了。重新添加所有项目,问题没有出现。将旧的解决方案文件与新的解决方案文件进行比较显示出一系列更改,很难说哪个更改是修复,但解决方案文件要干净得多。