我一直在努力执行EF Migrate.exe。
我的解决方案有几个项目。迁移和实体存在于项目数据中。控制器和视图存在于Web中。
我尝试使用migrate.exe - 但是我正在努力让第一个参数(程序集)被接受。文件说:
Assembly:指定包含的程序集的名称 迁移配置类型。
我试过了:
migrate.exe“MySolution \ DataProject \ bin \ Debug \ Data.dll”
ERROR: Could not load file or assembly 'D:\\MySolution\\Data\\bin\\Debug\\Data' or one of its dep
endencies. The given assembly name or codebase was invalid. (Exception from HRES
ULT: 0x80131047)
知道出了什么问题吗?
答案 0 :(得分:33)
我(我认为)你需要的东西:
C:\Tools\migrate.exe some.dll /StartUpDirectory=C:\Project\bin\
。 C:\Tools\migrate.exe C:\Project\bin\some.dll
- 在此方案中,migrate.exe将无法加载some.dll的依赖项,除非你把所有some.dll的依赖项放在SAME目录中作为migrate.exe。C:\Tools\migrate.exe some.dll
/StartUpDirectory=<the path where you target dll is present>
子句,而你应指定程序集的名称,而不指定路径:C:\Tools\migrate.exe some.dll /StartUpDirectory=C:\Project\bin\
$SolutionPath = (Resolve-Path '..').Path
$ToolsPath = "$SolutionPath\Build\Lib\"
task db {
$migrator = $ToolsPath + 'Migrations\migrate.exe'
$migrateCommand = "$migrator zasz_me.dll /StartUpDirectory=$SolutionPath\zasz.me\bin\ /connectionStringName:FullContext /startUpConfigurationFile:$SolutionPath\zasz.me\Web.config /verbose"
Write-Host $migrateCommand
Invoke-Expression $migrateCommand
}
答案 1 :(得分:1)
我在这里回答了一个类似的问题,关于如何通过参数覆盖connectionstring来迁移。我还没有指定web / app.config文件就可以使用它。