无法在VS 2015中从控制器添加视图:“运行所选代码生成器时出错”

时间:2016-01-25 12:25:51

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

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

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

  

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

我用Google搜索了问题,发现了类似的问题,但没有一个明确的解决方案,一些类似的问题由VisualStudio的前版本发布,但正如我所说的没有一个明确的解决方案。

为了澄清我的经历,这是我一步一步做的事情:

选择ASP.NET Web应用程序:

enter image description here

选中MVC的空模板:

enter image description here

从控制器尝试Add View

enter image description here

某些设置......

enter image description here

错误:

enter image description here

造成这个问题的原因是什么?它的解决方案是什么?

更新:

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

24 个答案:

答案 0 :(得分:53)

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

  1. 关闭Visual Studio
  2. 删除此文件夹中的所有内容C:\ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ComponentModelCache
  3. 重新启动Visual Studio
  4. 14.0适用于visual studio 2015.这也适用于其他版本。

答案 1 :(得分:9)

我遇到了这个问题,并显示了另一条错误消息“ -1超出范围”。

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

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

答案 2 :(得分:5)

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

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

如果您无法打开自己创建的视图,只需右键单击视图文件,选择使用打开,然后选择 HTML(网络表单)编辑器然后就可以了。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

从此文件夹中删除VS 2019...。

答案 5 :(得分:0)

这个问题我是这样解决的

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

enter image description here

和5.0.2版本的代码生成包

enter image description here

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

和它的工作

答案 6 :(得分:0)

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

答案 7 :(得分:0)

就我而言,帮助了以下方面:

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

答案 8 :(得分:0)

我知道这是一个非常老的话题,但是在处理我的问题时遇到了它。我的原因是我重命名了我的Model类之一。即使该应用程序已构建且运行良好,当我尝试添加新控制器时,我也遇到了相同的错误。对我来说,我只是删除了已重命名的课程,将其添加回去,一切都很好。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

右键单击解决方案下的项目,然后单击“卸载项目”,

您将看到该项目已卸载,因此现在右键单击它,然后按加载项目

然后尝试添加您的控制器

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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

答案 15 :(得分:0)

以防万一有人感兴趣 - 带有干净缓存的解决方案对我没用。但是我设法解决了一个问题,但卸载了系统中的所有.Net框架,然后逐个安装它们。

答案 16 :(得分:0)

我也一直在抓头,在我的实例中发现,我的Web.config文件中增加了一个附加部分。对此进行评论并进行重建即可解决该问题,现在我可以添加一个新的控制器。

答案 17 :(得分:0)

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

使用如下类型:

    [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,字符串,字节等,而没有类型:DateTime,List,HttpPostedFileBase等。

答案 18 :(得分:0)

我有一个相同的错误,但是在VS 2017中,当我创建一个控制器时。我做的方式与@ sh.alawneh所写的相同。另外,我尝试做@longday编写的内容。但这没有用。然后我尝试另一种方式:

  • 右键单击目标文件夹。
  • 从列表中,选择添加=>新项目。

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

也许我会帮助某人。

答案 19 :(得分:0)

我目前正在尝试使自己熟悉MVC4。我已经使用MVC 5进行了一段时间的开发,但是我需要了解MVC 4才能获得MCSD认证。我正在关注Pluralsight上的教程,该教程针对的是旧版本的Entity Framework和MVC(该视频于2013年发布!)

2个小时前,我遇到了完全相同的错误,并且一直在试图找出问题所在。幸运的是,由于本教程中的项目没有意义,因此我能够在整个过程中向后退,以找出导致对象引用未设置错误的原因并进行修复。

我发现实际解决方案的结构中有一个错误。

我建立了一个MVC Web项目(' ASP.NET Web应用程序( .NET Framework '),但是我还有2个类库,其中一个我的数据访问层,其中一个负责为连接到我的数据库的模型设置域。

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

MVC项目不喜欢这样。

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

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

答案 20 :(得分:0)

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

清理对我有用的项目(构建->清理解决方案)生成器正在使用一些过时的二进制文件来构建控制器和视图。清洁溶液将删除过时的二进制文件和箔。

答案 21 :(得分:0)

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

答案 22 :(得分:0)

尝试清除ComponentModelCache,

1.关闭Visual Studio

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

3.Restart Visual Studio

4.再次检查

这也使用VS2017来获得解决方案

答案 23 :(得分:0)

我刚刚重新启动了我的视觉工作室,它确实有效。