Общий доступ к коду проектов

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

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

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

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

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

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

Shared Project architecture

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

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

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

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

В этом разделе описывается создание и использование общего проекта с помощью Visual Studio для Mac. Полный пример см. в разделе " Пример общего проекта".

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

Чтобы создать общий проект, перейдите к > файлу нового решения... (или щелкните правой кнопкой мыши существующее решение и выберите добавить > новый проект...):

New Shared Project

На следующем экране выберите имя проекта и нажмите кнопку "Создать".

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

Empty Shared Project

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

Добавление ссылки на общий проект выполняется так же, как и ссылка на обычный проект библиотеки. На этом снимке экрана показан проект Xamarin.iOS, ссылающийся на общий проект.

Project reference to Shared Project

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

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

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

На экране "Параметры" показано ниже: имя проекта и пространство имен по умолчанию являются единственными двумя параметрами, которые вы обычно измените.

Shared Project Options

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

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

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

Проект Windows Телефон можно перемещать из Visual Studio для Mac, даже если этот тип проекта не поддерживается для компиляции в Visual Studio для Mac.

Запущенные приложения показаны ниже:

iOS, Android, Windows Phone examples

Итоги

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