运行所选代码生成器时出错:“对象引用未设置为对象的实例。”错误?

Posted

技术标签:

【中文标题】运行所选代码生成器时出错:“对象引用未设置为对象的实例。”错误?【英文标题】:There was an error running the selected code generator: 'Object reference not set to an instance of an object.' Error? 【发布时间】:2016-12-31 19:38:43 【问题描述】:

我已经尝试了所有解决方案,例如修复 VS 2013,但没有用。 当您通过右键单击控制器文件夹创建控制器并添加控制器时,然后右键单击新创建的控制器的操作并选择添加视图,当我尝试创建视图时,它就发生了。它不是一个新项目,它是一个现有项目。

【问题讨论】:

我在 vs 2015 中遇到了类似的错误。添加控制器后构建解决方案并添加视图有所帮助。 我有同样的问题,我认为它与 EF 和 mysql 驱动程序有关... 重启 VS 为我解决了这个问题。 【参考方案1】:

对我来说,这个错误与我的解决方案中有一个项目有关,该项目是一个 .NET Core 项目库,并且在包含 DbContext 的项目中被引用。

删除——或者我猜想改变类型——.NET 核心库解决了这个问题

【讨论】:

我认为这可能是我遇到的问题 ;-( 这是我第一次尝试将脚手架与 .NET Core 项目一起使用。它始终与框架风格的库一起使用【参考方案2】:

我在 VS2017 上遇到了这个问题,我通过这样做解决了这个问题: 转到C:\Users\username\AppData\Local\Microsoft\VisualStudio\15.0_7fca0c70,您将看到一个名为ComponentModelCache 的文件夹,只需将其重命名为_ComponentModelCache 或其他任何名称,visual studio 将再次创建此文件夹。 在 VisualStudio 文件夹名称 15.0_7fca0c70 下要注意的一件事可能会有所不同,这取决于您的 VS 版本。现在你可以开始了。希望它可以帮助某人。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

我在 Visual Studio 2017 中遇到了同样的错误,我通过这个解决方案修复了它:

1 - 如果您使用任何数据库,必须安装所有驱动程序(我的意思是 Nugget 包等...) (我使用 MySql db,所以我必须先安装 MySql 安装程序并安装 MySql、Data、EntityFramWorkCore)

2 - 我 更新 我的 Visual Studio 与 Visual Studio 安装程序(您必须在开始时搜索 Visual Studio 安装程序并在下次更新时运行它(不需要添加任何新组件或代码只选择更新按钮))

对我有用,希望对你有帮助

【讨论】:

【参考方案5】:

尝试了以下所有答案,但没有成功:

解决方案清洁 删除旧迁移 关闭并重新打开 Visual Studio 删除 Visual Studio 临时组件文件夹

这个有效:

卸载包 (Microsoft.VisualStudio.Web.CodeGeneration.Design) 并从包管理器控制台重新安装。

我的环境: 视觉工作室 2019 - Razor 页面 - .Net Code 2.2 - Windows 10

【讨论】:

我不得不删除 GCop,因为它引用了 Microsoft.VisualStudio.Web.CodeGeneration.Design 的过时版本。 @KSwift87 显然有些组件文件崩溃了,需要刷新【参考方案6】:

通过将解决方案中的一些项目从 .net 标准 2.0 更改为 .Net Framework 4.8,解决了我的问题(特别是“对象引用未设置为对象的实例。”错误)。

这是受到上述Timo Hermans 的回答的启发,并尝试了删除之前有帮助的 ComponentModelCache 的主要答案。

在项目中,我正在跟踪链接到我正在使用的模型并将它们更改为 net48 的项目中的脚手架。我不必全部更改它们,因此不完全确定哪些项目,但我从 Models 项目开始,然后跟随其他关键项目将它们改回 net48,直到脚手架再次工作。

希望这可能对某人有用,因为它是我的动力!

【讨论】:

同样的问题,我引用了一个标准项目,当我将其更改为框架时一切正常【参考方案7】:

像魅力一样对我有用的简单步骤

    从解决方案中删除项目 使用 Add Exisiting project 重新添加相同的项目 立即构建和添加视图,它可以工作了

【讨论】:

【参考方案8】:

Visual Studio 2019/2022:

    清理项目 重建项目 关闭并重新打开 Visual Studio 2022

如果不起作用 -> 将 Microsoft.VisualStudio.Web.CodeGeneration.Design NuGet 包更新到最新版本,然后重试。

【讨论】:

【参考方案9】:

此错误与实体框架数据模型有关.. 为解决方案执行这些步骤...

    删除您的实体框架数据模型。 再次从数据库设计中重新生成模型。 然后重新构建解决方案......并享受编码。

【讨论】:

【参考方案10】:

尝试安装 Windows 管理框架:

https://www.microsoft.com/en-us/download/details.aspx?id=34595

安装后重启电脑。

【讨论】:

【参考方案11】:

我有同样的错误,我只是删除了 web 项目所在文件夹中的只读权限

【讨论】:

【参考方案12】:

或者你可能像我一样没有注意到“数据上下文类”字段是空白的。哎呀。如果是这样,只需选择您的数据上下文类并重试。

对于这种情况,确实应该有一个更好的错误。

【讨论】:

【参考方案13】:

通过启动一个全新的项目来消除错误,因为我最初引用了一个类库,该类库包含我的项目的数据访问和业务逻辑代码。

【讨论】:

【参考方案14】:

我在windows10上的vs2017中遇到同样的错误,请尝试以管理员身份运行vs,希望它也对你有用。

【讨论】:

不知道为什么这被否决了——这在 VS2019 预览版中对我有用——弗兰克干杯【参考方案15】:

虽然我没有立即注意到当我向解决方案中添加另一个项目时我添加控制器的能力停止了,但我最终意识到这是导致我中断的一个可重复的原因。这对我有用:

除了添加控制器的 .Net Web App 项目之外,我还向解决方案添加了另一个项目 - 这对我来说是个问题。 我卸载了新项目,然后再次尝试添加控制器步骤。这次成功了。 然后我重新加载了新项目并继续工作

我花了几个小时来诊断和解决这个问题。也许它可以帮助其他人不旋转这么长时间!

【讨论】:

【参考方案16】:

我没有重命名,而是留下了 DefaultController,然后在它创建后对其进行了重命名。

【讨论】:

【参考方案17】:

我的主要 ASP.Net MVC 项目旁边有一个 Standard .Net v2 类库,它针对 .Net Framework v4.6.2 并且在创建了几个控制器后突然出现了提到的错误。

所以我:

    删除了对类库的引用 完全删除类库

    .Net Framework v4.6.2创建了另一个

    问题解决了。

【讨论】:

【参考方案18】:

我遇到了同样的错误,我刚刚关闭了 web.config 文件,它现在可以工作了。

【讨论】:

【参考方案19】:

在 VS2019 中出现同样的错误,看起来我在将三个项目合并为一个解决方案后错过了项目参考。

我在我的 UI 项目中引用了 API 和类库,因此我可以使用 db 上下文(在 API 项目中)和类文件来搭建脚手架,但未能在 API 项目中引用类库(它会以前被添加为 NuGet 包),它给了我这个错误消息。

卸载软件包并添加为项目参考,我的问题似乎已解决。

【讨论】:

【参考方案20】:

我刚刚从 DATA CONTEXT CLASS 中删除了空格**。为我工作。

添加视图 > 数据上下文类 > REGMVCEntities**(REGISTRATION.Models)

【讨论】:

【参考方案21】:

对我来说,我将我的包从 5.0.5 降级到 5.0.4 都认为可以正常工作

【讨论】:

【参考方案22】:

最后,我的问题是我试图添加脚手架项目的项目位于网络共享驱动器/映射驱动器上。将项目移动到本地磁盘解决了我的问题。

VS 2013 更新 5

【讨论】:

【参考方案23】:

重建您的项目并检查警告消息。尝试修复这些问题,然后重试!

【讨论】:

【参考方案24】:

只需更改 Web.Config 文件中的 ConnectionString 来自

<add name="xxx" connectionString="Data Source=xxx;initial catalog=xxx;Persist Security Info=True;User ID=xxxx;Password=xxxx;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

收件人

<add name="xxx" connectionString="metadata=res://*/EFMOdel.csdl|res://*/EFMOdel.ssdl|res://*/EFMOdel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxxx;initial catalog=xxxx;persist security info=True;user id=xxxx;password=xxx;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

【讨论】:

以上是关于运行所选代码生成器时出错:“对象引用未设置为对象的实例。”错误?的主要内容,如果未能解决你的问题,请参考以下文章

VS 2013 脚手架中的“运行所选代码生成器时出错”

如何在设计时避免 XAML 代码中的“对象引用未设置为对象的实例”异常?

运行所选代码生成器时出错:无法解析类型“Microsoft.EntityFrameworkCore.DbContextOption”的服务

运行所选代码生成器时出错'无法检索'ERP.EF.StockItem'的元数据'找到不明确的匹配项

对象引用未设置为对象的实例...错误?

MVC 4 - 对象引用未设置为对象的实例。当 POST 动作和索引每一行时