Общие (Shared) проекты

Совместное использование кода при использовании общих проектов.

Общие (Shared) проекты

Общие проекты позволяют писать общий код, на который ссылается ряд различных прикладных проектов. Код компилируется в рамках каждого ссылающегося проекта и может включать в себя директивы компилятора, чтобы помочь включить функциональные возможности для конкретной платформы в общую базу кода.

Обзор

Общие проекты позволяют писать код, который разделяется между несколькими целевыми проектами, включая приложения Xamarin.

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

Требования

Поддержка Общих проектов была добавлена в Xamarin Studio 5 и Visual Studio 2013 Update 2.

Microsoft выпустила новый тип проекта  Shared Projects для Visual Studio 2013 Update 2 (апрель 2014. Обратитесь к документации Microsoft по Windows Phone 8.1 и Windows Store для получения более подробной информации о том, как он работает с этими платформами.

Что такое Общий проект?

В отличие от большинства других типов проектов Общий проект не имеет никаких выходных данных в форме DLL, вместо этого код компилируется в каждый проект, который ссылается на него. Это показано в диаграмме ниже — концептуально всё содержимое проекта «скопировано» в каждый ссылки на проект и компилируется как будто он является их частью.

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

Общий проект не компилируется сам по себе, он существует исключительно как группировка файлов исходного кода, которые могут быть включены в другие проекты. Когда на Общий проект ссылается другой проект, то код эффективно собирается как часть этого проекта. Общие проекты не могут ссылаться на любой другой тип проекта (включая другие совместные проекты).

Обратите внимание, что проекты приложений для Android не могут ссылаться на другие проекты Android приложений — например, проект модульного тестирования Android не может ссылаться на проект приложения Android. Для получения дополнительной информации об этом ограничении см. это обсуждение на форуме.

Пошаговое руководство для Visual Studio

В этом разделе описывается как создавать и использовать Общий проект совместно с использованием Xamarin Studio.

Создание Общего проекта

Для создания нового Общего проекта перейдите в меню File > New Solution… и выберите имя.

Вы можете также добавить новый Общий проект к решению, щелкнув правой кнопкой мыши на файле решения и выборе Add -> Add New Project …. Новый Общий проект выглядит так, как показано ниже — обратите внимание нет библиотек или узлов компонентов; они не поддерживаются для общих проектов.

 

Для Общего проекта нужно, что бы была хотя бы одна ссылка с компилируемого проекта (например, приложения iOS или Android, или библиотеки, или проекта PCL). Разделяемый проект не компилируются, когда он не имеет никакого отношения к проектам,  ссылающимся на него, так что синтаксические (или любые другие) ошибки не будут выделены до тех пор, пока на него ничего не ссылается.

Добавление ссылки на Общий проект делается так же, как ссылки на обычную библиотеку проекта. Этот скриншот показывает проект Xamarin.iOS, ссылающийся на Общий проект.

Когда на Общий проект ссылается другая библиотека или приложение, вы можете построить решение и просмотреть любые ошибки в коде. Когда на Общий проект ссылаются два или более других проекта, в левом верхнем углу редактора исходного кода появляется меню, в котором указано, какие проекты ссылаются на этот файл.

Параметры Общего проекта

Когда вы щелкаете правой кнопкой мыши на Общем проекте и выбираете «Параметры», там меньше настроек, чем в других типах проектов. Поскольку Общие проекты не компилируются (сами по себе), вы не можете устанавливать параметры вывода или компилятора, конфигурации проекта, подпись сборки или настраиваемые команды. Код в Общем проекте эффективно наследует эти значения от всего, что ссылается на них.

Экран «Параметры» показан ниже: имя проекта и пространство имен по умолчанию — это только две настройки, которые вы обычно изменяете.

Пример Общего проекта

В примере Tasky используется общий проект для хранения общего кода, используемого приложениями iOS, Android и Windows Phone. Оба файла исходного кода SQLite.cs и TaskRepository.cs используют директивы компилятора (например, #if __ANDROID__) чтобы создавать разные выходные данные для каждого из приложений, которые ссылаются на них.

Полная структура решения показана ниже (в Xamarin Studio и Visual Studio соответственно):

Обратите внимание, что проект Windows Phone можно перемещать из Xamarin Studio, хотя этот тип проекта не поддерживается для компиляции в Xamarin Studio (новая функция Xamarin Studio 5).

Работающие приложения показаны ниже.

Резюме

В этой статье описано, как работают Общие проекты, как их можно создавать и использовать как в Xamarin Studio, так и в Visual Studio, и представлен простой пример приложения, демонстрирующего действие совместно используемого Общего проекта.


Оригинал статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *