【问题标题】:Can't Add View from Controller in VS 2015 : "There was an error running the selected code generator"无法在 VS 2015 中从控制器添加视图:“运行所选代码生成器时出错”
【发布时间】:2016-05-01 18:17:43
【问题描述】:

我正在关注一个视频教程,其中我需要使用MVC 创建一个空的ASP.NET Web 应用程序,使用Visual Studio 2015,是 ASP.NET 世界的新手,我正在一步一步地跟随。

我的项目创建得很好,下一步从现有的 Controller 添加一个视图,我遇到了一个消息框错误:

错误:
运行所选代码生成器时出错: '无效指针(HRESULT 异常:0x80004003(E_POINTER))'

我用谷歌搜索了这个问题,发现了类似的问题,但没有一个明确的解决方案,一些类似的问题是由 VisualStudio 的早期版本发出的,但正如我所说的,没有一个明确的解决方案。

为了澄清我的经历,这是我一步一步完成的:

选择一个 ASP.NET Web 应用程序:

已选中 MVC 的已选择空模板:

尝试从控制器Add View

一些设置...

错误:

是什么导致了这个问题,解决方法是什么?

更新:

事实证明,即使尝试手动添加视图,我也会遇到同样的错误,添加视图是不可能的!

【问题讨论】:

标签: asp.net-mvc visual-studio visual-studio-2015


【解决方案1】:

尝试清除 ComponentModelCache,下次启动 VS 时缓存会重建。

  1. 关闭 Visual Studio
  2. 删除此文件夹 C:\Users\ [your users name] \AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache 中的所有内容
  3. 重启 Visual Studio

14.0 适用于 Visual Studio 2015。这也适用于其他版本。

【讨论】:

  • 这对我不起作用。此问题的任何其他答案中列出的任何其他解决方案也没有。
  • 这对我有用,尽管我的错误不同。我想亲吻某人。一段时间以来,我一直在努力解决这个问题。
  • 简单重启 VS 2017 为我做到了
  • 我的路径 C:\Users\\AppData\Local\Microsoft\VisualStudio\15.0_eed87ff6\ComponentModelCache
  • 我在 2019 年做了这个,“添加视图”项完全从菜单中消失了,我现在只有“添加 MVC 5 视图”(我不使用,我在 4 )
【解决方案2】:

我遇到了不同的错误消息“-1 is outs the bounds of..”的问题

唯一对我有用的是通过右键单击项目并选择“删除”从解决方案中删除该项目。然后右键单击解决方案,添加现有项目,然后选择项目以将其重新加载到解决方案中。

重新加载项目后,我现在可以再次添加视图。

【讨论】:

  • 工作就像一个魅力!谢谢
【解决方案3】:

我在创建控制器时遇到了同样的错误,但在 VS 2017 中。我以与@sh.alawneh 所写相同的方式进行操作。另外,我试着做@longday 写的。但它没有用。然后我尝试了另一种方式:

  • 右键单击目标文件夹。
  • 从列表中选择 Add => New Item。

在那里我选择了一个新的控制器,它工作正常。

也许我会帮助别人。

【讨论】:

  • 我清除了文件夹,卸载了项目,做了dotnet restore。都没有奏效。但确实如此。
  • 验证项目属性并在 2017 年为我选择正确的框架,它指向 4.5.1,我改为 4.8 它工作
【解决方案4】:

按照以下步骤以不同于典型方式的方式添加视图:

  • 1) 打开 Visual Studio。
  • 2) 创建/打开您的项目。
  • 3) 转到解决方案资源管理器。
  • 4) 右键单击​​目标文件夹。
  • 5) 从列表中选择添加
  • 6) 从子列表中,选择MVC View Page (Razor)MVC View Page with layout (Razor)
  • 7) 如果您选择上一步中的第二个选项,您应该从弹出窗口中为您的视图选择一个布局页面。
  • 8) 就是这样!

如果您无法打开创建的视图,只需右键单击视图文件,选择打开方式,然后选择HTML(网络表单)编辑器即可.

【讨论】:

  • 错误是由代码生成器引起的,即 VS 试图根据选定的模型类构建视图。使用您的方法添加视图不允许使用脚手架,并且您必须手动编写视图的所有布局。
【解决方案5】:

右击解决方案下的项目,点击卸载项目,

您会看到项目已卸载,所以现在重新右键单击它并按加载项目

然后尝试添加您的控制器

【讨论】:

  • 在 VS 2019 中为我工作
【解决方案6】:

在我的情况下帮助了以下内容:

  1. 重启VS
  2. 解决方案资源管理器 => 右键单击​​解决方案 => 重建解决方案

【讨论】:

  • 在 VS 2017 中为我工作
【解决方案7】:

假设您在 DLL 中使用 datacontext,好吧,这是我的情况,我不知道为什么我遇到了与您描述的相同的错误,我在后端项目上创建了一个 datacontextLocal 来解决它。然后我将 Dbset 传递给正确的 datacontext 并删除本地(如果你愿意,你可以让它在那里,将来会有所帮助

如果您准备在本地数据上下文中使用它,请创建一个新的,然后将 Dbset 传递给正确的一个

【讨论】:

    【解决方案8】:

    在 ASP.NET Core 中检查您是否有 Microsoft.VisualStudio.Web.CodeGeneration.Tools nuget 包,它与您的项目版本相对应。

    【讨论】:

    • Microsoft.VisualStudio.Web.CodeGeneration.Tools is not compatible with asp.net 3.1 应该考虑安装Microsoft.VisualStudio.Web.CodeGeneration.Design
    【解决方案9】:

    C:\Users\{WindowsUser}\AppData\Local\Microsoft\VisualStudio\16.0_8183e7d1\ComponentModelCache

    从这个文件夹中删除 VS 2019 ....

    【讨论】:

      【解决方案10】:

      我就是这样解决这个问题的

      首先我拥有最新版本 5.0.5 的实体框架

      以及5.0.2版本的代码生成包

      所以我只是卸载了实体框架并安装了 5.0.2 版本,与代码生成包相同

      它的工作原理

      【讨论】:

      • 我收到“运行所选代码生成器时出错”,VS 试图安装“microsoft.visualstudio.web.codegeneration.design”。我不得不将“microsoft.aspnetcore.app”从 2.1.27 降级到与“microsoft.visualstudio.web.codegeneration.design”相同的 2.1.1 版本。
      【解决方案11】:

      以防万一有人感兴趣 - 清理缓存的解决方案对我不起作用。但我设法解决了一个问题,但卸载了系统中的所有 .Net 框架,然后将它们一一安装。

      【讨论】:

        【解决方案12】:

        我刚刚重新启动了我的 Visual Studio,它工作正常。

        【讨论】:

          【解决方案13】:

          尝试清除 ComponentModelCache,

          1.关闭Visual Studio

          2.删除此文件夹 C:\Users\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache 中的所有内容

          3.重启Visual Studio

          4.再次检查

          这也是用VS2017得到的解决方案

          【讨论】:

            【解决方案14】:

            我遇到了阻止代码生成工作的类似问题。显然,我的元数据具有未知的属性或值。我必须承认我没有在这里尝试所有答案,但谁真的想重新安装或下载正在使用的众多 Nuget 包中的任何一个。

            清理项目对我有用(构建->清理解决方案)生成器使用一些过时的二进制文件来构建控制器和视图。清理解决方案删除了​​过时的二进制文件,瞧。

            【讨论】:

              【解决方案15】:

              我目前正在尝试熟悉 MVC 4。我一直在使用 MVC 5 进行开发,但我需要了解 MVC 4 才能学习我的 MCSD 认证。我正在通过 Pluralsight 学习一个教程,针对的是更旧版本的 Entity Framework 和 MVC(该视频于 2013 年发布!)

              我在 2 小时前遇到了同样的错误,并且一直在努力找出问题所在。幸运的是,由于本教程中的项目毫无意义,我能够在整个过程中后退一步,找出导致 object ref not set 错误的原因,并修复它。

              我发现实际解决方案的结构存在错误。

              我设置了一个 MVC Web 项目('ASP.NET Web 应用程序(.NET Framework'),但我也有 2 个类库,一个包含我的数据访问层,一个为连接到我的数据库的模型保存域设置。

              这些都是'类库(.NET Standard'类型。

              MVC 项目不喜欢这样。

              一旦我创建了类型为“类库 (.NET Framework)” 的新项目,并将旧库中的所有文件复制到新库中并修复了MVC Web 项目的参考,重建和重试使我能够正确构建视图。

              这似乎是一个显而易见的解决方案,不要将 .NET Standard 项目与 .NET Framework 项目放在一起并期望它能够正常工作,但它可能会帮助其他人解决此问题!

              【讨论】:

                【解决方案16】:

                我的问题是模型类中使用的类型。

                像这样使用类型:

                    [NotMapped]
                    [Display(Name = "Image")]
                    public HttpPostedFileBase ImageUpload { get; set; }
                
                
                    [NotMapped]
                    [Display(Name = "Valid from")]
                    public Nullable<DateTime> Valid { get; set; }
                
                
                    [NotMapped]
                    [Display(Name = "Expires")]
                    public Nullable<DateTime> Expires { get; set; }
                

                不再在代码生成器中工作。我必须删除这些类型并在没有它们的情况下使用脚手架,然后再添加它们。

                傻了,[NotMapped]以前搭脚手架的时候干活的。

                使用基本类型:int、string、byte 等,不使用类型:DateTime、List、HttpPostedFileBase 等。

                【讨论】:

                  【解决方案17】:

                  我也一直在为这个问题摸不着头脑,我在我的实例中发现一个附加部分已添加到我的 Web.config 文件中。将其注释掉并重建解决了这个问题,我现在可以添加一个新的控制器。

                  【讨论】:

                    【解决方案18】:

                    一个简单的 VS 重启对我有用。我刚刚关闭VS并重新启动。

                    【讨论】:

                      【解决方案19】:

                      这些解决方案都不适合我。我刚刚更新了 Visual Studio(更新可用),突然它就可以工作了。

                      【讨论】:

                        【解决方案20】:

                        将 EntityFramework 从 nuget 包管理器安装到我的项目后,该问题已得到解决。请查看已添加 EntityFramework 的项目引用。最后,在将 EntityFramework 添加到项目引用后,我可以使用模板添加视图。

                        【讨论】:

                          【解决方案21】:

                          删除解决方案目录中的 .vs 文件夹对我有用。

                          【讨论】:

                            【解决方案22】:

                            我正在开发 Core 3 应用程序,在添加控制器时出现此问题。我发现 Microsoft.VisualStudio.Web.CodeGeneration.Design 包已使用 .net 4.x 框架 dll 进行了更新。将项目更新到 Core 3.1 解决了这个问题。

                            【讨论】:

                              【解决方案23】:

                              我知道这是一个非常古老的线程,但我在处理我的问题时遇到了它。我的原因是因为我重命名了我的模型类之一。即使应用程序构建并运行良好,但当我尝试添加新控制器时,我得到了同样的错误。对我来说,我只是删除了我重命名的类,然后将其重新添加,一切都很好。

                              【讨论】:

                                【解决方案24】:

                                检查您的数据库连接字符串,如果 appsettings.json 中有任何语法错误,它将返回此错误。

                                【讨论】:

                                  【解决方案25】:

                                  构建日志中暗示的另一个常见原因是,当您尝试构建脚手架时,您的 IIS Express Web 服务器正在运行。停止/退出您的网络服务器,然后再次尝试构建脚手架。

                                  【讨论】:

                                    猜你喜欢
                                    • 2014-01-13
                                    • 2020-08-10
                                    • 2019-10-15
                                    • 2013-11-24
                                    • 1970-01-01
                                    • 2016-05-13
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多