Как межплатформенная платформа .NET действительно?

Что должно обычно делаться для запуска приложения WinForms на машине Linux или Mac?

a. Просто скопируйте и выполненный (предположение, что им установили Платформу).
b. Восстановить.
c. Косметические модификации исходного кода.
d. Тяжелая модернизация модификаций и форм исходного кода.

Предположение, что приложение разрабатывается как 100% управляемый код C# 3 средствами Визуальный Экспресс C# или Visual Studio предназначение 2008 года для.Net Framework 3.5, разработало, не используя 3-х партийных компонентов/библиотек, не инкапсулируя неуправляемый код или любые взломы низкого уровня - только стандарт зарегистрированный Microsoft используемый.Net Framework C# API). Или те же условия, но язык C# 4.Net Framework 4 и Visual Studio 2010.

Существует ли где-нибудь практическое руководство для разработки Моноготовых приложений при использовании MS.Net Framework и Visual Studio? Любые инструкции, подсказки, определенные выделения аспекта, сообщая разработчику того, что он действительно должен иметь в виду для записи легко портативного приложения, не имея необходимость к поиску каждую функцию в Моно ссылке при кодировании в Visual Studio.

9
задан Ivan 4 May 2010 в 21:29
поделиться

4 ответа

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

Mono очень хорошо поддерживает функции Windows Forms и C # 3.

Однако, если вы используете какие-либо собственные компоненты, доступ к данным за пределами того, что поддерживается Mono или WPF, вы столкнетесь с проблемами. C # 4 / .NET 4, скорее всего, здесь тоже не будет работать.

5
ответ дан 4 December 2019 в 11:40
поделиться

Теоретически .Net полностью кроссплатформенный, поскольку он зависит не от конкретной архитектуры, а от виртуальной машины.

Однако на практике у вас есть реализация Microsoft для Windows и реализация mono для linux / mac. Основная проблема заключается в том, что реализации могут отличаться друг от друга, что затрудняет запуск приложения на нескольких машинах из коробки.

Исходный код не нужно изменять, если не некоторые библиотеки не портированы в моно, или используются другие библиотеки.

C # 4 может быть немного сложнее, потому что mono еще не является актуальным для реализации Microsoft.

0
ответ дан 4 December 2019 в 11:40
поделиться

Ну, я не разрабатывал большие проекты, но по моему опыту вам придется внести некоторые незначительные изменения в свой код, но просто для уточнения некоторые вещи. Само приложение должно нормально работать без перекомпиляции. Что касается форм Windows, я обнаружил, что иногда при работе с GDi они работают очень медленно, но, возможно, я просто делал что-то не так. Однако команда Mono утверждает, что полностью поддерживает формы Windows.

Стоит упомянуть еще об одном. Действительно сложно написать кроссплатформенное приложение, которое не было бы жестким без использования некоторых встроенных функций ОС. Я думаю, вам всегда следует рассматривать возможность написания дополнительных модулей для конкретной ОС, чтобы обеспечить тесную интеграцию с базовой ОС и использовать некоторые интересные вещи (например, потрясающие функции панели инструментов в OSX). Вы также должны помнить, что люди привыкли к разному внешнему виду на разных ОС

1
ответ дан 4 December 2019 в 11:40
поделиться

Возможно, ваше приложение просто запустится без изменений, но я еще не видел, чтобы это произошло в реальном мире.

Инструмент, который может вам очень помочь, - это MoMA . MoMA создан теми же людьми, что и Mono, и сообщит вам, используете ли вы какие-либо функции, которые еще не были перенесены.

В общем, .NET 3.5 и Winforms в основном подходят. Совместимость с версией 4 все еще находится в стадии разработки.

Более современным инструментом, если вы разрабатываете в Windows, является .NET Portability Analyzer от Microsoft. Это можно использовать через Visual Studio.

12
ответ дан 4 December 2019 в 11:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: