我一直在试图让EF通过powershell运行我的迁移,但是没有在哪里。我可以使用包管理器控制台通过visual studio运行它们,但是当我使用PowerShell脚本运行它时,我收到错误:
migrate.exe:在行:1 char:1 +& " C:\发展\ Ef中\工具\ migrate.exe" " TestApp.Data.dll" /连接... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:String)[],RemoteException + FullyQualifiedErrorId:NativeCommandError未处理的异常:System.IO.FileNotFoundException:无法加载文件或 assembly' EntityFramework,Version = 6.0.0.0,Culture = neutral, 公钥= b77a5c561934e089'或其中一个依赖项。该 系统找不到指定的文件。在 System.Data.Entity.Migrations.Console.Resources.EntityRes..ctor()
在 System.Data.Entity.Migrations.Console.Resources.EntityRes.GetLoader() 在 System.Data.Entity.Migrations.Console.Resources.EntityRes.GetString(字符串 name,Object [] args)at System.Data.Entity.Migrations.Console.Program.WriteError(字符串 消息) System.Data.Entity.Migrations.Console.Program.Main(String [] args)
我正在运行的修改过的脚本(由章鱼生成)是:
& "C:\Development\Ef\Tools\migrate.exe" "TestApp.Data.dll" /connectionProviderName="System.Data.SqlClient" /startupConfigurationFile="C:\Development\FeatureBranch\TestApp\TestApp.Root\TestApp.WebApi\web.config" /startUpDirectory="C:\Development\FeatureBranch\TestApp\TestApp.Root\TestApp.WebApi\bin" /Verbose
我已经谷歌了很多,我知道这是一个常见的问题,所以我做了以下检查:
通过nuget安装的EF版本是6.1.3。这在解决方案中的所有package.config文件中都是相同的,即:
< package id =" EntityFramework"版本=" 6.1.3" targetFramework =" net45" />
我检查了所有的网络和应用配置,它们都是一致的:
< section name =" entityFramework" type =" System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,EntityFramework,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089" requirePermission ="假" />
这看起来有点奇怪,虽然我会假设nuget会正确设置它?无论哪种方式,改变这些值都没有区别。
我已经检查过没有旧版本的ef。我使用的migrate.exe是nuget下载的我的packages文件夹中的版本,它声明它的版本是6.1.3-40302。我正在运行.net 4.5,它与软件包配置相匹配。
任何建议都将受到赞赏,我会尝试,也许我错过了一些明显的东西。
答案 0 :(得分:1)
所以,如果其他人有同样的问题,我设法解决了这个问题。八达通的剧本并不好,所以我从头开始编写。至少对我来说关键问题是脚本需要将migrate.exe复制到TestApp.Data.dll所在的文件夹中并从那里执行。