Общие проекты совместного использования кодаShared Projects code sharing

Общие проекты позволяют писать общий код, на который ссылается несколько проектов различных приложений. Код компилируется как часть каждого ссылающийся проект и могут включать директивы компилятора, помогающие внедрить функциональность платформы в общий кодовой базы.Shared Projects let you write common code that is referenced by a number of different application projects. The code is compiled as part of each referencing project and can include compiler directives to help incorporate platform-specific functionality into the shared code base.

Общие проекты (которые иногда называют общих проектов активов) позволяют писать код, который разделяется между несколькими проектами целевой, включая приложения Xamarin.Shared Projects (also sometimes called Shared Asset Projects) let you write code that is shared between multiple target projects including Xamarin applications.

Они поддерживают директивы компилятора, таким образом, можно условно включал код конкретной платформы, которую следует скомпилировать в подмножество проектов, ссылающихся на общий проект.They support compiler directives so that you can conditionally include platform-specific code to be compiled into a subset of the projects that are referencing the Shared Project. Кроме того, поддерживается интегрированной среды разработки для управления директивах компилятора и визуализации, как код будет выглядеть в каждом приложении.There is also IDE support to help manage the compiler directives and visualize how the code will look in each application.

Если вы использовали файл связывания в прошлом для совместного использования кода между проектами, проектах общих работает аналогичным образом, но со значительно улучшенную поддержку интегрированной среды разработки.If you have used file-linking in the past to share code between projects, Shared Projects works in a similar way but with much improved IDE support.

Что такое общий проект?What is a Shared Project?

В отличие от большинства других типов проектов общий проект не имеет никаких выходных данных (в виде библиотеки DLL), вместо этого код компилируется в каждый проект, который ссылается на нее.Unlike most other project types a shared project does not have any output (in DLL form), instead the code is compiled into each project that references it. Это показано на схеме ниже — по существу все содержимое общедоступного проекта «скопирован в» каждого ссылающийся проект и компилируется так, будто она входила в состав их.This is illustrated in the diagram below - conceptually the entire contents of the Shared Project is "copied into" each referencing project and compiled as though it was a part of them.

Код в общий проект может содержать директивы компилятора, которые будут включить или отключить фрагменты кода, в зависимости от того, какое приложение в проекте используется код, который предлагается в окнах цветной платформы, на схеме.The code in a Shared Project can contain compiler directives that will enable or disable sections of code depending on which application project is using the code, which is suggested by the colored platform boxes in the diagram.

Сам по себе не компилируется общего проекта, если проект существует только как группа файлов исходного кода, которые могут быть включены в других проектах.A Shared Project does not get compiled on its own, it exists purely as a grouping of source code files that can be included in other projects. Когда ссылка на другой проект, как эффективно компилировать код часть этого проекта.When referenced by another project, the code is effectively compiled as part of that project. Общие проекты не могут ссылаться на другие типы проектов (в том числе и в других проектах общих).Shared Projects cannot reference any other project type (including other Shared Projects).

Обратите внимание, что проектах приложений Android не может ссылаться на другие проекты приложения Android — например, проект Android модульного теста не может ссылаться на проект приложения Android.Note that Android application projects cannot reference other Android application projects - for example, an Android unit test project cannot reference an Android application project. Дополнительные сведения об ограничениях см. в этом обсуждения в форумах.For more information about this limitation, see this forum discussion.

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

В этом разделе описано, как создать и использовать общий проект, с помощью Visual Studio для Mac.This section walks through how to create and use a Shared Project using Visual Studio for Mac. См. в общий пример проекта разделе полный пример.Refer the to Shared Project Example section for a complete example.

Создание общего проектаCreating a Shared Project

Чтобы создать новый общий проект перейдите к файл > новое решение... (или щелкните правой кнопкой мыши существующее решение и выбрав Добавить > Добавить новый проект... ):To create a new Shared Project navigate to File > New Solution... (or right click an existing solution and choosing Add > Add New Project...):

Новый общий проектNew Shared Project

На следующем экране выберите имя проекта и нажмите кнопку создать.On the next screen, choose the project name and click Create.

Ниже приведен общий проект — Обратите внимание, что это не ссылки или узлы компонентов; они не поддерживаются для общих проектов.A new Shared Project is shown below - notice there are no References or Component nodes; these are not supported for Shared Projects.

Пустой общий проектEmpty Shared Project

Для общего проекта будут полезны ему необходимо ссылаться хотя бы один проект можно использовать сборки (например, iOS или Android приложения или библиотеки или проекта переносимой библиотеки Классов).For a Shared Project to be useful, it needs to be referenced by at least one build-able project (such as an iOS or Android application or library, or a PCL project). Общий проект не компилируется, когда он ничего не ссылается на его, поэтому синтаксис (или любой другой) ошибки не будут выделены, пока он ссылается, что-то еще.A Shared Project does not get compiled when it has nothing referencing it, so syntax (or any other) errors will not be highlighted until it has been referenced by something else.

Добавить ссылку на общий проект выполняется так же, как ссылки на обычный проект библиотеки.Adding a reference to a Shared Project is done the same way as referencing a regular Library project. На этом снимке экрана показан проект Xamarin.iOS, ссылающихся на общий проект.This screenshot shows a Xamarin.iOS project referencing a Shared Project.

После общий проект ссылается другой библиотеки или приложение можно построить решение и просмотреть ошибки в коде.Once the Shared Project is referenced by another library or application you can build the solution and view any errors in the code. Если ссылка на общий проект с двух или более других проектах, появится меню в левой верхней части редактора исходного кода, показано выбрать, какие проекты ссылку на него.When the Shared Project is referenced by two-or-more other projects, a menu appears in the top-left of the source code editor that shows choose which projects reference this file.

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

Когда щелкните правой кнопкой мыши на общий проект и выберите параметры существует меньше параметров, чем другие типы проектов.When you right-click on a Shared Project and choose Options there fewer settings than other project types. Так как в проектах общих не компилируются (сами по себе), нельзя задать параметры вывода или компилятора, конфигурации проекта, подпись сборки или пользовательские команды.Because Shared Projects are not compiled (on their own), you cannot set output or compiler options, project configurations, assembly signing, or custom commands. Код в общий проект фактически наследует эти значения все, что является ссылка на него.The code in a Shared Project effectively inherits these values from whatever is referencing them.

Параметры экрана показан ниже - проект имя и пространство имен по умолчанию являются только двумя параметрами, которые обычно будут изменены.The Options screen is shown below - the Project Name and the Default Namespace are the only two settings that you will generally change.

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

Tasky пример использует общий проект, содержащий общий код, используемом средой оба iOS, Android и Windows Phone приложениями.The Tasky example uses a Shared Project to contain the common code used by both the iOS, Android and Windows Phone applications. Как SQLite.cs и TaskRepository.cs файлы исходного кода использование директивы компилятора (например)Both the SQLite.cs and TaskRepository.cs source code files utilise compiler directives (eg. #if __ANDROID__) для получения разных выходных данных для каждого из приложений, которые на них ссылаются.#if __ANDROID__) to produce different output for each of the applications that reference them.

Полное решение структура приведена ниже (в Visual Studio для Mac и Visual Studio соответственно):The complete solution structure is shown below (in Visual Studio for Mac and Visual Studio respectively):

Проект Windows Phone можно переходить из среды Visual Studio для Mac, несмотря на то, что данный тип проекта не поддерживается для компиляции в Visual Studio для Mac.The Windows Phone project can be navigated from within Visual Studio for Mac, even though that project type is not supported for compilation in Visual Studio for Mac.

Запущенные приложения, показаны ниже:The running applications are shown below:

СводкаSummary

В этом документе описано, как работают общие проекты, как они могут быть создаются и используются в Visual Studio для Mac и Visual Studio и появился простой пример приложения, демонстрирующий общего проекта в действии.This document described how Shared Projects work, how they can be created and used in both Visual Studio for Mac and Visual Studio, and introduced a simple sample application that demonstrates a Shared Project in action.