Задать вопрос

Одновременное ведение проектов на нескольких платформах?

Здравствуйте. Хотел спросить, есть ли в сообществе люди, которые разрабатывают проект одновременно для нескольких платформ (в данном случае я имею в виду .Net в классическом исполнении, версия роли не играет, и Mono, плюс Mono for Android). Возник вопрос такого рода: как правильно организовать солюшен (Solution), чтобы держать в нем библиотеки для всех платформ. Пример — пишем библиотеку классов (Class library), которая должна использоваться на всех платформах. Но, например, на Mono for android не поддерживается SoapFormatter, поэтому из класса для этой платформы надо исключить участки кода, отвечающие за работу с Soap. При этом, выходит, для каждой платформы надо создавать отдельно эту библиотеку с одинаковым названием (три штуки), делать копии всех файлов с исходным кодом (скажем, в библиотеке их 10 штук, суммарно выходит 30), следить за тем, чтобы вносить правки в код ВСЕХ библиотек для всех платформ после правки только в одной из них… Выходит несколько утомительно, если проектов много.

Может быть, есть определенная методология, описывающая как правильно работать в таких случаях, как грамотно организовать такую работу, следить за корректностью кода для всех платформ и т.п. Или кто-нибудь поделится своим опытом?
  • Вопрос задан
  • 3425 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@hachik
Нужно использовать блоки условной компиляции и в зависимости от платформы, включать требуемый код.
Ответ написан
SabMakc
@SabMakc
А вариант разработки под самую ограниченную версию, с последующим переносом под остальные не подходит?
Ответ написан
@sergei-grigorev
Для сборки под разные платформы или версии можно написать задание для систем сборки (и затем запускать их, к примеру 'Ant was' — сборка под IBM WebSphere, или 'Ant tomcat' — сборка для Apache Tomcat).

Чтобы проверить работу кода под разные платформы, исправление ошибок для разных поддерживаемых версий — пишите unit тесты, которые воспроизводят ошибку в коде, либо интеграционный тест для более сложных ошибок. Соответственно если поправили ошибку только на одну платформу, то автотесты провалятся под другой платформой.
Еще можно ставить хаки на систему контроля версий, которые не будут пропускать коммиты с комментарием # в текущую ветку, пока не будут закрыты ошибки на других сопровождаемых ветках (хотя этот вариант мне не нравится, он использовался в некоторых компаниях, где я работал).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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