在MVC中启用迁移会引发文件未找到错误

时间:2015-08-19 15:41:49

标签: c# asp.net-mvc entity-framework visual-studio-2013 nuget-package

我是使用MVC的新手,在使用Visual Studio 2013中有关迁移的教程时,我似乎打破了在Package Manager控制台中与EntityFramework的搭配。

我相信这是在我将EntityFramework更新到版本6.1.3时开始的,但这似乎与MVC Controller脚手架不兼容。所以我把它推回到5.0.0版本。

现在我输入命令enable-migrations

我收到以下错误:

  

使用“8”参数调用“CreateInstanceFrom”的异常:“无法加载文件或程序集'EntityFramework,Version = 5.0.0.0       ,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其中一个依赖项。该系统找不到指定的文件。”       在D:\ ss \ CAP \ CAP_MVC_Dev_2 \ CAP_MVC \ packages \ EntityFramework.5.0.0 \ tools \ EntityFramework.psm1:431 char:31       + $ domain.CreateInstanceFrom<<<< (       + CategoryInfo:NotSpecified:(:) [],MethodInvocationException       + FullyQualifiedErrorId:DotNetMethodTargetInvocation

文件EntityFramework.psm1存在于上面描述的位置,但错误似乎出现在该文件中?如何$domain.CreateInstanceFrom丢失,从哪里来?卸载并重新安装EntityFramework包没有任何区别。

我尝试过从头创建新项目,但这个错误仍然存​​在。卸载/重新安装Visual Studio 2013既没有解决问题,也没有破坏已连接的数据库并重新启动空数据库。

2 个答案:

答案 0 :(得分:2)

所以,事实证明解决方案类似于这个

Entity Framework code first migrations throwing error

当我第一次尝试这种解决方案时,有报道称gacutil未被识别。由于我工作的环境,添加gacutil是不容易普遍认可(我相信),所以我发现文件系统中的gacutil.exe,将其复制到链接中引用的lib\net45文件夹发布,然后运行命令

gacutil /i EntityFramework.dll

这解决了问题,我不再收到“找不到文件”错误'

答案 1 :(得分:2)

我没有安装GAC,而是采用以下解决方案(VS2013 SP5 + EF 5):

已复制(解决方案目录)\ packages \ EntityFramework.5.0.0 (整个目录) 到

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\EFTools\NuGet Packages\

NuGet Packages目录不存在,因此需要手动创建它。