Ответ 1
После прочтения этого, этого и this
У меня (я думаю), что вам нужно:
- Если вы используете migrate.exe для сборки .NET 4, вам НЕОБХОДИМО переименовать Redirect.config, доступный в пакетах \EntityFramework.5.0.0\tools, для migrate.exe.config и скопировать его в тот же каталог, что и перенос. Exe. Для запуска migrate.exe против сборки .NET 4.5 вам НЕ нужна эта копия, файл migrate.exe.config не должен существовать.
- Правильная версия DLL-структуры сущности должна находиться в каталоге SAME как migrate.exe. Правильная версия - это пакеты\EntityFramework.5.0.0\lib\net40\для запуска migrate.exe для сборки .NET 4. Правильная версия - это пакеты\EntityFramework.5.0.0\lib\net45\для запуска migrate.exe на сборке .NET 4.5.
- Если вы укажете /StartUpDirectory = не укажете путь для/сборки:
C:\Tools\migrate.exe some.dll /StartUpDirectory=C:\Project\bin\
. - Если вы не укажете каталог автозагрузки, вам нужно указать полный путь в примере /assembly:
C:\Tools\migrate.exe C:\Project\bin\some.dll
- В этом случае migrate.exe не сможет загружать зависимости some.dll, если только вы поместите все зависимости some.dll и поместите их в каталог SAME как файл migrate.exe. - Если вы поместите файл migrate.exe по тому же пути, что и ваш файл some.dll, то migrate.exe сможет использовать тот же EntityFramework.dll, который использует ваше приложение, и может загружать все зависимости и может загружать некоторые .dll без какого-либо пути, например
C:\Tools\migrate.exe some.dll
- Если вы поместите файл migrate.exe в отдельную папку инструментов, например Im, для нее нужна правильная версия EntityFramework.dll в каталоге SAME как файл migrate.exe, для этого потребуется предложение
/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
}