Общий доступ к коду общих проектов
Общие проекты позволяют писать общий код, на который ссылается ряд различных проектов приложений. Код компилируется как часть каждого ссылающегося проекта и может включать директивы компилятора, которые помогают внедрить функции конкретной платформы в общую базу кода.
Общие проекты (также иногда называемые проектами общих ресурсов) позволяют писать код, который совместно используется несколькими целевыми проектами, включая приложения Xamarin.
Они поддерживают директивы компилятора, чтобы можно было условно включить код для конкретной платформы для компиляции в подмножество проектов, ссылающихся на общий проект. Существует также поддержка интегрированной среды разработки для управления директивами компилятора и визуализации того, как код будет выглядеть в каждом приложении.
Если в прошлом вы использовали компоновку файлов для совместного использования кода между проектами, общие проекты работают аналогичным образом, но с значительно улучшенной поддержкой интегрированной среды разработки.
Что такое общий проект?
В отличие от большинства других типов проектов общий проект не имеет выходных данных (в формате DLL), вместо этого код компилируется в каждый проект, который ссылается на него. Это показано на приведенной ниже схеме. Концептуально все содержимое общего проекта копируется в каждый ссылающийся проект и компилируется так, как если бы он был частью этого проекта.
Код в общем проекте может содержать директивы компилятора, которые будут включать или отключать разделы кода в зависимости от того, какой проект приложения использует код, предлагаемый цветными полями платформы на схеме.
Общий проект не компилируется сам по себе, он существует исключительно как группа файлов исходного кода, которые могут быть включены в другие проекты. При ссылке на другой проект код эффективно компилируется как часть этого проекта. Общие проекты не могут ссылаться на другие типы проектов (включая другие общие проекты).
Обратите внимание, что проекты приложений Android не могут ссылаться на другие проекты приложений Android. Например, проект модульного теста Android не может ссылаться на проект приложения Android. Дополнительные сведения о общем проекте.
Пошаговое руководство по Visual Studio для Mac
В этом разделе описывается создание и использование общего проекта с помощью Visual Studio для Mac. Полный пример см. в разделе Общий пример проекта .
Создание общего проекта
Чтобы создать общий проект, перейдите в раздел Файл > Новое решение... (или щелкните правой кнопкой мыши существующее решение и выберите Добавить > новый проект...):
На следующем экране выберите имя проекта и нажмите кнопку Создать.
Новый общий проект показан ниже. Обратите внимание, что ссылок или узлов компонентов нет; Они не поддерживаются для общих проектов.
Чтобы общий проект был полезен, на него должен ссылаться по крайней мере один проект с возможностью сборки (например, приложение или библиотека iOS, Android или проект PCL). Общий проект не компилируется, если в нем нет ссылки на него, поэтому синтаксические (или любые другие) ошибки не будут выделены, пока на него не будет ссылаться что-то другое.
Добавление ссылки на общий проект выполняется так же, как и ссылка на обычный проект библиотеки. На этом снимке экрана показан проект Xamarin.iOS, ссылающийся на общий проект.
После того как на общий проект ссылается другая библиотека или приложение, вы можете создать решение и просмотреть все ошибки в коде. Если на общий проект ссылаются два или более других проектов, в левом верхнем углу редактора исходного кода отображается меню, в котором показано, какие проекты ссылаются на этот файл.
Параметры общего проекта
Если щелкнуть правой кнопкой мыши общий проект и выбрать пункт Параметры , будет меньше параметров, чем в других типах проектов. Так как общие проекты не компилируются (самостоятельно), нельзя задать параметры вывода или компилятора, конфигурации проектов, подписывание сборок или пользовательские команды. Код в общем проекте фактически наследует эти значения от того, что ссылается на них.
Экран Параметры показан ниже. Имя проекта и Пространство имен по умолчанию являются единственными двумя параметрами, которые вы обычно измените.
Пример общего проекта
В примере Tasky общий проект используется для хранения общего кода, используемого приложениями iOS, Android и Windows Phone. Как файлы исходного SQLite.cs
кода, так и TaskRepository.cs
используют директивы компилятора (например, #if __ANDROID__
) для создания различных выходных данных для каждого из приложений, которые ссылаются на них.
Полная структура решения показана ниже (в Visual Studio для Mac и Visual Studio соответственно):
Проект Windows Phone можно перемещать из Visual Studio для Mac, даже если этот тип проекта не поддерживается для компиляции в Visual Studio для Mac.
Запущенные приложения показаны ниже:
Итоги
В этом документе описано, как работают общие проекты, как их можно создавать и использовать как в Visual Studio для Mac, так и в Visual Studio, а также представлен простой пример приложения, демонстрирующий общий проект в действии.