#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 -> Время выполнения.