Решение Мэтью правильное, но я бы хотел немного подробнее остановиться на конфигурации решения и проекта.
Конфигурации сборки решения и проекта в MonoDevelop работают точно так же, как Visual Studio.Решение может быть нацелено на любую смесь вещей, на которые могут ориентироваться его проекты.Однако для каждой платформы, на которую вы ориентируетесь, требуется особый тип проекта, поэтому один проект не может быть нацелен на несколько платформ.Однако ваше решение может содержать несколько проектов, каждый из которых предназначен для отдельной платформы.Он также может содержать библиотеки, содержащие общий код для этих проектов.
Предположим, у вас есть решение, содержащее четыре проекта:
- SharedLibrary
- MonoForAndroidProject
- MonoTouchProject
- WindowsPhoneProject
Предположим, что каждый из них имеет конфигурации проекта по умолчанию для этих типов проектов.
Конфигурации вашего решения, то, что вы видите вВыбор настроек на панели инструментов, может быть любым, что угодно - имена не имеют особого значения.Каждый из них может сопоставляться с любым набором (или подмножеством) проектов и конфигураций проектов.
Например, у вас может быть четыре конфигурации отладки:
- DebugIPhone : сопоставление с Отладка | AnyCPU конфигурация SharedLibrary и Debug | iPhone конфигурация MonoTouchProject
- DebugIPhoneSimulator : сопоставление с Debug | AnyCPU конфигурация SharedLibrary и Debug | iPhoneSimulator конфигурация MonoTouchProject
- DebugAndroid: сопоставление с Отладка | AnyCPU конфигурация SharedLibrary и Отладка | AnyCPU конфигурация MonoForAndroidProject
- DebugWinPhone : сопоставление с Отладка | AnyCPU конфигурация SharedLibrary и Отладка | AnyCPU конфигурация WindowsPhoneProject
Еще один пример, вы можете иметь конфигурацию выпускагарантия, которая собирает все пакеты устройств: Release | AnyCPU конфигурация SharedLibrary и Release | iPhone конфигурация MonoTouchProject , Релиз | AnyCPU конфигурация MonoForAndroidProject , Релиз | AnyCPU конфигурация WindowsPhoneProject .
Вы также можете добавить специфичные для цели конфигурации проектав SharedLibrary с символами, определенными для воздействия на директивы #if в исходном коде, и сопоставьте их с соответствующими конфигурациями решения, хотя это не совместимо с наличием единой конфигурации для всех устройств.
Прямо сейчас вы столкнетесь с несколькими проблемами с вышеуказанным решением.
Во-первых, MonoDevelop не может загружать и создавать проекты Windows Phone, а Visual Studio не может загружать и создавать проекты MonoTouch.Таким образом, вы получите сообщение об ошибке при загрузке в любую IDE, но другие проекты все равно будут работать.
Во-вторых, не существует типа библиотеки, на который могут ссылаться все типы проектов.Вы могли бы иметь возможность использовать, например, проект библиотеки MfA и ссылаться на него как dll из других типов проектов.Другая возможность может состоять в том, чтобы иметь несколько библиотечных проектов, включающих в себя одни и те же файлы - эти проекты могут находиться в одном каталоге и содержать одни и те же файлы на месте, или они могут находиться в разных местах и включать файлы в качестве ссылок на файлы.Вы можете использовать компоновщик проекта Visual Studio для их синхронизации.
Некоторые люди предпочитают иметь несколько файлов решений, по одному для каждой платформы.У вас есть большая гибкость:
- они могут включать в себя одни и те же проекты, или отдельные проекты, или смесь
- их проекты могут включать (или связывать) одни и те же файлы или разныефайлы или смесь
- они могут находиться в одних и тех же каталогах, или иметь отдельные каталоги, или как смесь