【问题标题】:There was an error running the selected code generator:运行所选代码生成器时出错:
【发布时间】:2020-08-10 00:37:22
【问题描述】:

我在 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[] 参数)

【问题讨论】:

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


    【解决方案1】:

    我也有这个问题,但以下答案对我有用。 选择“管理 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" />
    

    【讨论】:

    • 值得注意的是,NuGet 包的版本必须与您正在使用的 .NET Core Framework 的版本(v3.1.* for .NET Core v3.1、v5.0.* for .NET 5 等)
    【解决方案2】:

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

    接下来,搜索 Microsoft.VisualStudio.Web.CodeGeneration.Utils,然后安装它。

    以上安装后,生成无误。

    【讨论】:

    • 这对我来说独自工作...... .NET Core 5,Razor Pages 应用程序,为模型搭建 CRUD 代码。
    【解决方案3】:

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

    【讨论】:

    • 这很有帮助。我在我的 csproj 中删除了该行,然后从 Nuget 命令提示符安装。错误消失了。
    【解决方案4】:

    对于它的价值,以下解决方案对我有用。

    我的设置: 首先,我的项目设置不同。我有一个 MyProject.Data 和 MyProject,我试图在 MyProject 中的 API 文件夹中搭建“带有动作的 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" /> 
    

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

    希望它可以帮助某人。编码愉快!

    【讨论】:

      【解决方案5】:

      我有类似的行为,但使用了不同版本的包:“Microsoft.VisualStudio.Web.CodeGeneration.Utils, Version=3.1.4.0”。 该软件包已安装(在 Manage NUGet Packages 和 .csproj 文件中)。我从 Manage NUGet Packages 卸载它并重新安装。 这解决了我的问题。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            【解决方案8】:

            我在 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
            

            【讨论】:

              【解决方案9】:

              我的解决方案中有一个 .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" />
              

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

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                  猜你喜欢
                  • 2019-10-15
                  • 2016-05-13
                  • 2014-01-13
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-11-24
                  • 2018-07-05
                  • 2015-05-05
                  • 2022-07-25
                  相关资源
                  最近更新 更多