Не могу использовать dbfirst для генерации моделей db с помощью efcore (3.0) в MacOS 10.15 - PullRequest
0 голосов
/ 17 октября 2019

Возможно ли, что Mac OS 10.15 больше не поддерживает 32-битную версию, но когда я попытался сгенерировать файл db models (dbfirst), потому что он использует 32-битную программу?

Комментарий ниже:

% dotnet ef dbcontext scaffold "server=localhost;uid=root;pwd=xxxxxxxx;port=3306;database=xxxxxx;" MySql.Data.EntityFrameworkCore -o Models -f

System.ComponentModel.Win32Exception (2): No such file or directory
   at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at Microsoft.EntityFrameworkCore.Tools.Exe.Run(String executable, IReadOnlyList`1 args, String workingDirectory, Boolean interceptOutput)
   at Microsoft.EntityFrameworkCore.Tools.Project.FromFile(String file, String buildExtensionsDir, String framework, String configuration, String runtime)
   at Microsoft.EntityFrameworkCore.Tools.RootCommand.Execute()
   at Microsoft.EntityFrameworkCore.Tools.Commands.CommandBase.<>c__DisplayClass0_0.<Configure>b__0()
   at Microsoft.DotNet.Cli.CommandLine.CommandLineApplication.Execute(String[] args)
   at Microsoft.EntityFrameworkCore.Tools.Program.Main(String[] args)
No such file or directory

1 Ответ

0 голосов
/ 13 ноября 2019

Эта проблема могла быть решена в этом выпуске (3.0.100-preview5-011562

Win32 не имеет ничего общего с 32- или 64-разрядными операционными системами, но я понимаю, почему вы могли бы подумать об этом. Имя может быть обманчивым. Win 32 - это класс-оболочка для некоторых исключений. Через него вы можете получить доступ к так называемому коду NativeError , который является 32-битным целым числом. Вот почему он называется win32. 64-разрядные операционные системы по-прежнему могут обрабатывать 32-разрядные числа

Это системный класс исключений, который используется, когда некоторые операции выполняются неправильно. Эти операции обычно включают вызовы системного уровня, такие как открытый файл или процесс

Исправление было связано с проблемой разрешений, а не с этим, но просто попробуйте обновить .NET Core и посмотрите, поможет ли это.

Найдитезапрос на исправление и запрос на исправление здесь

выпуск: https://github.com/dotnet/cli/issues/11231

исправление: https://github.com/dotnet/core-setup/pull/6003

Я подозреваю, что вы обновились до 64-битного MACOS, но где-то ещеПо ходу дела было несоответствие между вашей .NET версией 32 / 64bit и некоторыми имеющимися у вас пакетами.

Пожалуйста, удалите глобальный nuget, а также убедитесь, что у вас есть 64-битные .NET и 64-битные двоичные файлы. В противном случае есть нечто под названием file system redirection, которое может попытаться сопоставить ваши 32-разрядные двоичные файлы с соответствующими 32-разрядными двоичными файлами, которые могут не существовать, если вы обновили .NET или пакеты

...