Запуск приложения .NET 4 с Mono - PullRequest
17 голосов
/ 16 марта 2011

Я пытаюсь запустить .NET exe на машине с Ubuntu (я установил пакет mono-complete), но пока безуспешно.Приложение скомпилировано с Visual C # Express 2010 в .NET 4 (профиль клиента).

Я пытаюсь выполнить программу с помощью следующей команды:

mono application.exe

Однако я получаю следующую ошибку:

ПРЕДУПРЕЖДЕНИЕ. Версия, поддерживаемая этим приложением, недоступна.Использование среды выполнения по умолчанию: v1.1.4322

** (application.exe: 5586): ПРЕДУПРЕЖДЕНИЕ **: отсутствует метод System.Windows.Forms.Application :: SetCompatibleTextRenderingDefault (bool) в сборке / usr / lib / mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089/System.Windows.Forms.dll, на которую есть ссылка в сборке /media/disk/application.exe

Необработанное исключение: System.MissingMethodException: метод не найден:'System.Windows.Forms.Application.SetCompatibleTextRenderingDefault'.

Предполагается использовать .NET 4, а не 1, но я не знаю, как его установить.Я пытался

mono --runtime=4.0.30319.1 application.exe

Но это тоже не сработало.

Любая помощь будет признательна.

Ответы [ 4 ]

17 голосов
/ 16 марта 2011

Похоже, что вы столкнулись с этой ошибкой:

У моего документа нет узлов: .net 4 Профиль клиента на Mono 2.8

Предполагается, что вы установили>Mono 2.8 (который был первым выпуском с поддержкой .NET 4.0).Если нет, вам следует установить более новый пакет Mono.

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

3 голосов
/ 16 марта 2011

Я подозреваю, что исключение связано с тем, что метод System.Windows.Forms.Application.SetCompatibleTextRenderingDefault не был реализован. Проходили ли вы инструмент через Mono Migration Analyzer (MoMA) , это должно помочь узнать, совместимо ли ваше приложение с mono. С этого момента вы можете обойти проблему, возможно даже добавив отсутствующий метод в ваш код.

1 голос
/ 16 марта 2011

Текущий моно-полный пакет (даже в Ubuntu Natty) использует моно 2.6.7, которое не поддерживает .NET 4.0 API. Вам придется создать новейшую версию mono, которая является наилучшим способом получить шанс использовать 4.0 API. « Complete » .NET 4.0, однако, планируется в моно 3.0.

0 голосов
/ 03 января 2014

Установите Monodevelop и просто щелкните правой кнопкой мыши файл example.csprj, являющийся проектом C # .NET в Linux, и выберите Monodevelop.

...