Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Импортирует содержимое одного файла проекта в другой файл проекта.
<Импорт проекта><>
Синтаксис
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Атрибуты и элементы
В следующих разделах описаны атрибуты, дочерние элементы и родительские элементы.
Attributes
| Свойство | Description |
|---|---|
Project |
Обязательный атрибут. Путь к файлу проекта для импорта. Путь может включать подстановочные знаки. Соответствующие файлы импортируются в отсортированном порядке. С помощью этой функции можно добавить код в проект, просто добавив файл кода в каталог. |
Condition |
Необязательный атрибут. Условие, которое необходимо оценить. Дополнительные сведения см. в разделе "Условия". |
Label |
Необязательный атрибут. Применяет идентификатор к этому элементу импорта. |
Sdk |
Необязательный атрибут. Ссылается на пакет SDK проекта. |
Дочерние элементы
None
Родительские элементы
| Элемент | Description |
|---|---|
| Проект | Обязательный корневой элемент файла проекта MSBuild. |
| ImportGroup | Содержит коллекцию элементов, Import сгруппированных по необязательному условию. |
Замечания
С помощью Import элемента можно повторно использовать код, который является общим для многих файлов проекта. Использование импорта упрощает обслуживание кода, так как все обновления, внесенные в общий код, распространяются на все проекты, импортируемые им.
По соглашению общие импортированные файлы проекта сохраняются в виде .targets файлов, но они являются стандартными файлами проекта MSBuild. MSBuild не препятствует импорту проекта с другим расширением имени файла, но рекомендуется использовать .targets расширение для согласованности.
Относительные пути в импортированных проектах интерпретируются относительно каталога импортируемого проекта (с несколькими исключениями, описанными далее в этом абзаце). Таким образом, если файл проекта импортируется в несколько файлов проекта в разных расположениях, относительные пути в импортированном файле проекта будут интерпретированы по-разному для каждого импортированного проекта. Существует два исключения. Одним из исключений является то, что в Import элементах путь всегда интерпретируется относительно проекта, содержащего Import элемент. Другим исключением является то, что UsingTask всегда интерпретирует относительный путь атрибута AssemblyFile относительно файла, содержащего UsingTask элемент.
Все зарезервированные свойства MSBuild, относящиеся к файлу проекта, на которые ссылается импортированный проект (например, MSBuildProjectDirectory и MSBuildProjectFile) назначаются значения на основе импортируемого файла проекта.
Если импортированный проект не имеет DefaultTargets атрибута, импортированные проекты проверяются в том порядке, в который они импортируются, и используется значение первого обнаруженного атрибута DefaultTargets . Например, если ProjectA импортирует ProjectB и ProjectC (в этом порядке), а ProjectB импортирует ProjectD, MSBuild сначала ищет DefaultTargets указанные в ProjectA, а затем ProjectB, затем ProjectD и, наконец, ProjectC.
Схема импортированного проекта идентична схеме стандартного проекта. Хотя MSBuild может быть в состоянии создать импортированный проект, маловероятно, так как импортированный проект обычно не содержит сведений о том, какие свойства следует задать или порядок выполнения целевых объектов. Импортированный проект зависит от проекта, в который он импортируется для предоставления этой информации.
Подстановочные знаки
MSBuild разрешает подстановочные знаки в атрибуте Project. При наличии подстановочных знаков все найденные совпадения сортируются (для воспроизводимости), а затем импортируются в этом порядке, как если бы заказ был явно задан.
Это полезно, если вы хотите предложить точку расширяемости, чтобы другой пользователь смог импортировать файл, не требуя явного добавления имени файла в импортируемый файл. Для этого Microsoft.Common.Targets содержит следующую строку в верхней части файла.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Example
В следующем примере показан проект с несколькими элементами и свойствами и импортируется общий файл проекта.
<Project DefaultTargets="Compile">
<PropertyGroup>
<resourcefile>Strings.resx</resourcefile>
<compiledresources>
$(O)\$(MSBuildProjectName).Strings.resources
</compiledresources>
</PropertyGroup>
<ItemGroup>
<CSFile Include="*.cs" />
<Reference Include="System" />
<Reference Include="System.Data" />
</ItemGroup>
<Import Project="$(CommonLocation)\General.targets" />
</Project>