Проблема с портированием Mono

#c# #winforms #mono

#c# #winforms #mono

Вопрос:

Я надеялся на некоторую помощь относительно переноса проекта Winforms C Sharp на mono. Когда я запускаю инструмент migration assistant, проблем нет. Однако, когда я пытаюсь запустить программу после компиляции в VS 2013, я получаю:

Необработанное исключение: система.Исключение InvalidProgramException: недопустимый IL-код в системе.Windows.Формы.Форма:.ctor (): тело метода пустое.

в TicketDL.Form2..ctor () [0x00000] в:0

при (удаленном вызове оболочки с проверкой) TicketDL.Form2:.ctor ()

в TicketDL.Program.Main () [0x00000] in:0 [ОШИБКА] ФАТАЛЬНОЕ НЕОБРАБОТАННОЕ ИСКЛЮЧЕНИЕ: система.Исключение InvalidProgramException: Недопустимый IL-код в системе.Windows.Формы.Форма:.ctor (): тело метода пустое.

в TicketDL.Form2..ctor () [0x00000] в:0

при (удаленном вызове оболочки с проверкой) TicketDL.Form2:.ctor ()

в TicketDL.Program.Main () [0x00000] в: 0

Кто-нибудь из вас, ребята, знает, что это значит? Я попытался удалить все пустые методы, которые смог найти!! Но эта ошибка продолжает появляться!

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

1. Mono WinForms больше не активно разрабатывается / поддерживается. Поэтому внимательно изучите риски, с которыми вы сталкиваетесь.

Ответ №1:

Система.Windows.Forms.Form.ctor конкретно ссылается на конструктор, определенный в системе.Windows.Формы.Класс формы, и не обязательно имеющий какое-либо отношение к классам, унаследованным от него (то есть к вашему коду). Поскольку это ошибка IL, все имеет такие явные пространства имен. Также, поскольку это IL, это происходит на уровне после компиляции, не обязательно из-за того, что вы сделали неправильно в коде более высокого уровня (C #).

Однако существует только одна перегрузка этого класса, поэтому вы можете захотеть проверить целевую среду выполнения, для которой вы создаете — Mono 3.2 указан Xamarin как эквивалент .NET 4.5, но вы можете создавать с использованием 4.5.1. Также рассмотрите возможность загрузки и сборки с помощью Xamarin, поскольку иногда это может иметь немного другой результат и поможет вам определить, на какую платформу Mono ориентирована ваша программа.

В значительной степени MOMA, похоже, описан как анализ методов, которые вы вызываете, и какие из них еще не были реализованы Mono. Также никогда не забывайте проверять страницу совместимости на случай, если MOMA что-то пропустила

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

1. Спасибо! Он избавился от ошибки… но теперь я получаю бесполезное: это приложение запросило среду выполнения завершить его необычным способом. Пожалуйста, свяжитесь со службой поддержки приложения для получения дополнительной информации.

2. Убедитесь, что вы работаете на x32 или любом другом процессоре — в Xamarin есть ошибка (ошибка 11207), которая не позволяет ему отлаживать x64. Кроме этого, точки останова и убедитесь, что вы переключились на . СЕТЕВАЯ среда выполнения в Project -> Время выполнения.