41

我正在创建一个模型的新视图。
我收到的错误消息是

错误
运行所选代码生成器时出错:
“拒绝访问路径
'C:\Users\XXXXXXX\AppData\Local\Temp\SOMEGUID\EntityFramework.dll'”。

我以管理员身份运行 VS 2013。

通过命令行查看了 MvcScaffolding 是否与 VS 2013 RC 兼容?但这似乎并没有解决问题。

VS2013 C#5 MVC5 全新项目开始于 VS 2013。

4

25 回答 25

25

VS2013 错误:运行所选代码生成器时出错:'已添加类型'SolutionName.Model.SalesOrder'的配置......'

我在学习 Pluralsight 课程“使用 EF、MVC、Knockout、Ajax 和验证的父子数据”时遇到了这个问题。我试图使用带有视图的模板MVC 5 Controller 添加一个New Scaffolded Item ,使用 Entity Framework

我使用的数据上下文类包括对 OnModelCreating 方法的覆盖。在 EF 默认值不足的情况下,需要覆盖添加一些显式数据库列配置。这个覆盖很简单,有效并且没有错误,但是(如上所述)它确实干扰了控制器脚手架代码的生成。

对我有用的解决方案:

1 - 我删除(注释掉)我的 OnModelCreating 覆盖并且脚手架模板完成且没有错误消息 - 我的控制器代码按预期生成。

2 - 但是,由于“模型已更改”,尝试构建项目时遇到了瓶颈。由于我的控制器代码现在已正确生成,我恢复(取消注释) OnModelCreating 覆盖并且项目成功构建并运行。

于 2014-08-16T22:31:55.383 回答
16

问题在于损坏的web.config包目录。

我创建了新项目,并将我的代码文件复制到新的工作项目中,后来我返回并在配置文件上运行 diffs,并在项目本身上运行文件夹 diff。

问题是更新使我的配置文件高度垃圾化,其中包含许多我最终清除的更新工件。

第二个问题是旧项目也一直挂在旧的 DLL 上,这些 DLL 应该被 Nuget 包的应用程序擦除。所以我擦了objandbin文件夹,然后是 package 文件夹。完成后,我能够将旧项目修复并干净地建造。

我还没有研究为什么配置文件或包文件夹如此无聊,但我假设它是两件事之一。

  1. 可能nuget包有缺陷
  2. TFS 源代码控制阻止 nuget 正确更新各种依赖项。

从那时起,在应用任何更新之前,我都会检查所有内容。但是,由于我有一段时间没有更新 EF,我没有证据表明这已经解决了我的 EF 或脚手架问题。

于 2014-01-22T01:55:06.763 回答
13

我能够解决这个问题,并对正在发生的事情有了更好的了解。最好的部分是我能够重新创建问题并修复它,以确保我在这里的解释。 解决方案是为数据访问层项目和 Web 项目安装完全相同版本的实体框架。

我的数据访问层使用 NuGet 安装了 Entity Framework v6.0.2,Web 项目没有安装 Entity Framework。尝试使用实体框架模板创建 Web API 控制器时,实体框架会自动安装,但它是旧版本 6.0.0 之一。我很惊讶地看到安装了两个版本的实体框架,在我的数据层项目中较新,在我的 Web 项目中较旧。有一次,我删除了旧版本并在 Web Project 上安装了新版本,问题就消失了。

于 2014-03-07T20:09:28.790 回答
12

我检查了我所有的项目,每个项目都有相同版本的实体框架。就我而言,问题是我的一个项目针对的是 .Net 4.0,而其余的项目是 .Net 4.5。

解决方案:

  1. 对于解决方案 Project->Properties->Application 中的每个项目:将 Target Framework 设置为 .Net 4.5(或任何您需要的)。
  2. 工具->管理解决方案的 NuGet 包。找到已安装的“实体框架”。然后单击管理。取消选中所有项目(注意需要 EF 的项目)。现在,重新管理 EF 并检查您需要的项目。
  3. 清洁和重建解决方案。
于 2014-05-01T12:52:24.557 回答
11

我在找到的每个网站上都尝试了所有答案,但没有任何效果......直到这个。迟到以防万一像我这样的人出现并有与我一样令人沮丧的经历。

我的问题与这里的许多问题类似,尝试使用脚手架尝试添加新控制器(ef6、webapi)时出现一般错误消息。我最初能够为大约 15 个控制器使用脚手架,但有一天它就停止工作了。

最终解决方案:

  1. 打开硬盘驱动器上的工作文件夹以获取解决方案。
  2. 删除 BIN 文件夹中的所有内容
  3. 删除 OBJ 文件夹中的所有内容
  4. 清理解决方案,重建解决方案,通过脚手架添加控制器

瞧!(为了我)

于 2015-05-13T14:46:31.760 回答
4

这通常是由无效Web.config文件引起的。我遇到了同样的问题,结果我无意中将 HTML 注释块<!-- -->更改为服务器端注释块@* *@(通过全部替换操作)。

如果您正在开发 WinForms 应用程序,请尝试查看App.config.

于 2014-05-25T11:17:49.990 回答
4

我有完全一样的问题。在学习 Pluralsight 课程“使用 EF、MVC、Knockout、Ajax 和验证的父子数据”时首次遇到此问题。

我正在使用 MVC 5、EF 6.1.1 和框架 4.5.2。

即使将我的 VS2013 更新为更新 4,此错误仍然存​​在。

能够通过在 DbContext 类中将 DbSet 更改为 IDbSet 来规避这个烦人的问题。答案最初来自这里

//From
public DbSet SalesOrders { get; set; }

//To
public IDbSet SalesOrders { get; set; }
于 2014-11-14T09:33:01.730 回答
3

以上都对我没有帮助。

我发现我的问题的原因是在脚手架项所依赖的上下文类中覆盖 OnModelCreating。通过注释掉这个方法,脚手架就可以工作了。

我真希望微软能发布更少的错误代码。

于 2014-08-12T00:56:12.497 回答
3

什么对我解决这个问题:关闭解决方案,然后通过单击项目文件而不是解决方案文件打开项目,添加您的控制器,然后鲍勃您的叔叔

于 2014-03-06T09:52:30.050 回答
2

对我们来说,它与构建配置有关,我们最近切换到使用的 Debug|x64 构建配置,回想起来似乎是脚手架停止工作的时候。

(我怀疑至少有 10 种不同的事情会导致这种情况,正如一些人发现对他们有用的 SO 上的各种答案所证明的那样——但对其他人不起作用,所以我不建议我的解决方案适用于所有人)。

什么对我们有用(在 64 位 Windows 7 上使用 VS 2013 Express for Web):

它(脚手架)在 Debug|x64 Build 配置中不起作用但是执行以下操作(似乎每一步都是必要的——无法弄清楚如何以更简化的方式进行操作)似乎对我们有用。

  1. 首先,切换到 Debug|x86--对解决方案中的所有项目使用解决方案(右键单击)配置管理器。(调试|任何 CPU 也可以工作)。
  2. 清洁您的解决方案。
  3. 关闭 Visual Studio。(如果我跳过这个就不能让它工作)。
  4. 打开 Visual Studio。
  5. 打开您的解决方案。
  6. 构建您的解决方案。
  7. 现在尝试添加脚手架项目;对我们来说,它在这一点上起作用了,我们不再收到有关“运行所选代码生成器时出错”的错误消息。

如果您需要切换回脚手架非工作构建配置,您可以在暂时搭建好所有需要的脚手架之后执行此操作。在搭建了我们需要的脚手架后,我们切换回了 Debug|x64。

于 2015-03-07T23:00:55.600 回答
2

在引用来自不同项目的模型时,我在新的 MVC5 项目中看到了此错误。检查路径,EntityFramework.dll 确实存在。虽然它是只读的。进程监视器显示尝试删除文件时出错。将我的包文件夹(存储在源代码管理中的副本)中的 EntityFramework.dll 设置为可写解决了这个错误,但又提出了另一个说它无法加载 EntityFramework 程序集,因为它与引用的不匹配。我的模型类是在另一个使用旧版本实体框架的项目中定义的。MVC5 项目引用 EF 6,而模型来自引用 EF 4.4 的项目。在模型项目中升级到 EF 6 为我修复了它。

于 2013-11-21T09:15:40.020 回答
2

运行所选代码生成器时出错:
“无法升级项目的依赖关系信息。请恢复项目并重试。

脚步:

  1. 转到您的项目并将所有 NuGet 包更新到最新版本。
  2. 构建您的应用程序,直到构建成功。
  3. 关闭解决方案并重新打开。
  4. 并尝试添加控制器、类等文件。

错误图片

于 2019-08-02T08:06:03.347 回答
1

这通常与您的 Web.config 的格式有关

重建解决方案并在错误下查找,选项卡消息。如果您对 web.config 有任何格式问题,您将在那里看到它。修复它并重试。

示例:我有connectionstring而不是connectionString

于 2016-12-12T20:00:53.423 回答
1

我在尝试将 Api 控制器添加到我的 MVC ASP.NET Web 应用程序时遇到了这个问题,原因与给出的其他答案完全不同。由于复制和粘贴操作,我不小心在整数属性的IndexAttribute声明中包含了StringLength属性:

[Index]
[IndexAttribute("NumTrainingPasses", 0), StringLength(50)]
public int NumTrainingPasses { get; set; }

一旦我摆脱了IndexAttribute声明,我就能够为包含有问题的属性 (NumTrainingPasses) 的模型添加一个 Api 控制器。

为了帮助搜索引擎,这是我在解决问题之前收到的完整错误消息:

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

无法检索“Owner.Models.MainRecord”的元数据。属性
“NumTrainingPasses”不是字符串或字节数组。只能为字符串或字节数组属性配置长度。

于 2015-07-15T20:10:09.360 回答
1

我的问题类似于这里的许多经验,尝试添加新视图或使用脚手架添加新控制器时出现一般错误消息。

我发现 MVC 5 和 EF 6 模型构建器不是好朋友:

我的解决方案:

  1. 在 Context 类中注释掉 modelBuilder。
  2. 清洁解决方案,重建解决方案。
  3. 通过脚手架添加视图和控制器
  4. 取消注释模型构建器。
于 2016-05-15T10:22:46.177 回答
0

我也遇到了 MSVS2013 Update 4 和 EF 6.0 这个问题我得到的消息是:

    there was an error running the selected code generator.
A configuration for type XXXX has already been added ...[]

我有一个大约有 10 个班级的模型。我在项目开始时搭建了元素,没有任何问题。

在添加功能几天后,我尝试从模型中构建另一个类,但一个错误阻止了我这样做。

我试图将 MSVS 从更新 2 更新到更新 4,注释掉我的 OnModelCreating 方法和其他没有运气的想法。

作为继续项目的临时方法,我创建了一个不同的 asp.net 项目,将我的模型类粘贴在那里(我使用的是 fluent api,因此它们上几乎没有注释)并成功创建了我的控制器和视图。

之后,我将创建的类粘贴回原始项目并更正了一些错误(主要是 dbset 名称)。

它似乎正在工作,尽管我想我仍然会发现与类之间的关系相关的错误(由于创建时缺乏流畅的配置)。

我希望这对其他用户有所帮助。

于 2015-02-25T12:05:29.633 回答
0

当我在单独的项目(我的数据访问层)中创建模型和上下文时,我经常在使用 MVC5 和 EF 时遇到此错误,并且我忘记将上下文连接字符串添加到 MVC 项目的 Web.Config。

于 2014-12-06T06:53:01.270 回答
0

当我尝试在给定Area的顶级文件夹之外创建一个新的脚手架时,这发生在我身上。

  • 我的区域
    | - File.cs(试图在这里创建一个新的脚手架。失败。)

我只是重新选择了我的区域,问题就消失了:

  • AyArea(添加 => 新的脚手架项目)

请注意,在脚手架生成后,您将被带到一个地方,如果不先重新选择该区域,您将无法创建新的脚手架(至少在 VS 2013 中)。

于 2015-04-20T15:51:55.167 回答
0

万一它对任何人有帮助,我重命名了模型所在的命名空间,然后重建了项目,然后再次将其重命名,然后重建,然后它就可以工作了。

于 2014-02-03T14:45:42.723 回答
0
  • vs2013更新4
  • EF 5.0.0
  • ibm db2connector 10.5 fp 5

更改 web.config 文件:从 ef 标签中删除 provider/s:

<entityFramework>
</entityFramework>

在配置部分下添加了连接字符串标签:

</configSections>
<connectionStrings>
<add name=".." connectionString="..." providerName="System.Data.EntityClient" />
</connectionStrings>
于 2015-06-28T04:02:39.723 回答
0

就我而言,我试图搭建 Identity 元素,但上述方法均无效。解决方案只是以管理员权限打开 Visual Studio。

于 2020-01-08T19:01:16.873 回答
0

当在我的 MVC 应用程序 EF 引用属性(在“属性”窗口中)“特定版本”被标记为 False 并且在我的其他项目(包含 DBContext 和模型)中从 MVC 应用程序引用 EF 引用属性被标记为时,我遇到了同样的问题真的。当我将其标记为 False 时,一切都很好。

于 2015-11-15T11:02:56.093 回答
-1

重建解决方案对我有用。在重建之前,我发现我的“ApplicationDbContext”的引用数为零,这是不可能的,所以重建解决方案,现在一切正常。

于 2014-09-10T10:08:17.610 回答
-2

这可能是由于nuget包的版本不同。通过转到解决方案中的 dependencies->nuget packages 文件夹来查看是否有这个。尝试安装所有单个版本,并在如上所述清理 componentmodelcache 文件夹后重新启动 Visual Studio。这应该为您完成工作。

于 2020-05-30T09:57:49.457 回答
-2

我在 VS 2017 中遇到了这个问题。我将平台目标(在项目属性>构建>常规中)设置为“x64”。脚手架在将其更改为“任何 CPU”后开始工作。

于 2019-03-27T09:51:22.760 回答