我正在开发一个新的.netcore api项目。我正在尝试使用章鱼部署应用程序。
我需要帮助从命令行执行迁移,我没有得到很多帮助。如果有人可以帮助我,那将会有所帮助。
这是我到目前为止所尝试的内容: 我已经借助以下链接来提出解决方案,但它对我来说并不适用。
https://www.benday.com/2017/03/17/deploy-entity-framework-core-migrations-from-a-dll/
我必须对脚本进行一些修改才能正确设置dll路径。 以下是它现在的样子
set EfMigrationsNamespace=%Dummy.WebAPI
set EfMigrationsDllName=%Dummy.WebAPI.deps.dll
set EfMigrationsDllDepsJson=%Dummy.WebAPI.deps.json
set EfMigrationsStartupAssembly=%Dummy.Data.dll
set DllDir=%cd%
set PathToNuGetPackages=%USERPROFILE%\.nuget\packages
set PathToEfDll=%PathToNuGetPackages%\microsoft.entityframeworkcore.tools\1.1.1\tools\netcoreapp1.0\ef.dll
ECHO %PathToEfDll%
dotnet exec --depsfile .\%EfMigrationsDllDepsJson% --additionalprobingpath %PathToNuGetPackages% %PathToEfDll% database update --assembly .\%EfMigrationsDllName% --startup-assembly .\%EfMigrationsStartupAssembly% --project-dir . --content-root %DllDir% --data-dir %DllDir% --verbose --root-namespace %EfMigrationsNamespace%
然而,脚本会抛出绑定错误的索引,这对我来说非常困惑。这是例外。
System.IndexOutOfRangeException:索引超出了数组的范围。 在Microsoft.DotNet.Cli.CommandLine.CommandLineApplication.ParseOption(Boolean isLongOption,CommandLineApplication c ommand,String [] args,Int32& index,CommandOption&选项) 在Microsoft.DotNet.Cli.CommandLine.CommandLineApplication.Execute(String [] args) 在Microsoft.EntityFrameworkCore.Tools.Program.Main(String [] args) 索引超出了数组的范围。
这个错误的任何线索?或者,如果我采取任何其他方法?
答案 0 :(得分:1)
似乎dotnet exec
命令未正确构建,因为它在解析命令时遇到问题。
我使用dotnet core 2-preview并且必须稍微更改批处理文件。我现在为我工作:
set EfMigrationsNamespace=%1
set EfMigrationsDllName=%1.dll
set EfMigrationsDllDepsJson=%1.deps.json
set DllDir=%cd%
set PathToNuGetPackages=%USERPROFILE%\.nuget\packages
set PathToEfDll=%PathToNuGetPackages%\microsoft.entityframeworkcore.tools\2.0.0-preview2-final\tools\netcoreapp2.0\ef.dll
dotnet exec --depsfile .\%EfMigrationsDllDepsJson% --additionalprobingpath %PathToNuGetPackages% %PathToEfDll% database update --assembly .\%EfMigrationsDllName% --startup-assembly .\%EfMigrationsDllName% --project-dir . --data-dir %DllDir% --verbose --root-namespace %EfMigrationsNamespace%