Во-первых, есть ли трассировка стека после * Assertion: should not be reached at mini-codegen.c:1402
?
Другие проблемы, которые я видел с этим сообщением об ошибке, обычно сопровождаются следом стека.
Из исходного кода MonoDevelop нажатие на кнопку Run в IDE вызывает
SRC / ядро / MonoDevelop.Ide / MonoDevelop.Ide.Commands / ProjectCommands.cs .
IdeApp.Workbench.ActiveDocument.Run (executionHandler);
из строки 284
SRC / ядро / MonoDevelop.Ide / MonoDevelop.Ide.Gui / Document.cs .
Звонит IdeApp.ProjectOperations.ExecuteFile (Window.ViewContent.ContentName, handler);
со строки 386
SRC / ядро / MonoDevelop.Ide / MonoDevelop.Ide / ProjectOperations.cs .
Это вызывает return ExecuteFile (file, context);
на линии 1044
Это вызывает IAsyncOperation aop = Execute (tempProject, context);
на линии 1051
Это вызывает ExecuteSolutionItemAsync (monitor, entry, context);
на линии 899
Это вызывает entry.Execute (monitor, context, IdeApp.Workspace.ActiveConfiguration);
на линии 918
Не уверен на 100% после этой точки.
Я полагаю, что этот вызов вызывает соответствующую команду выполнения, конструктор которой устанавливает
Command = command;
Arguments = arguments;
WorkingDirectory = workingDirectory;
this.environmentVariables = environmentVariables;
Затем вызывается метод StartProcess из src / core / MonoDevelop.Core / MonoDevelop.Core.Execution / ProcessService.cs .
Если вы можете определить разницу между командой, аргументами команды, рабочим каталогом и переменными окружения, то вы наверняка сможете запустить ее с той же конфигурацией, что и MonoDevelop.