Элемент Import (MSBuild)

Обновлен: Ноябрь 2007

Импорт содержимого одного файла проекта в другой файл проекта.

<Import Project="ProjectPath"
    Condition="'String A'=='String B'" />

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут

Описание

Project

Обязательный атрибут.

Путь к файлу проекта, который требуется импортировать.

Condition

Необязательный атрибут.

Проверяемое условие. Дополнительные сведения см. в разделе Условия MSBuild.

Дочерние элементы

Нет

Родительские элементы

Элемент

Описание

Project

Обязательный корневой элемент файла проекта MSBuild.

Заметки

Элемент Import позволяет повторно использовать общий фрагмента кода для нескольких файлов проектов. Перемещение общих блоков кода в другие файлы проектов позволяет хранить код и вносить в него изменения централизованно. Например, проект А и проект Б задают определенные значения элемента и свойства для своих сборок, а проект В содержит общий процесс построения. Проект А и проект Б могут импортировать проект В, при этом любые изменения в процесс построения вносятся только в один файл.

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

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

Значения всех зарезервированных свойств MSBuild, относящихся к файлу проекта (например MSBuildProjectDirectory и MSBuildProjectFile), на которые есть ссылки в импортируемом проекте, присваиваются на основе импортирующего файла проекта.

Если импортируемый проект не имеет атрибута DefaultTargets, проверка импортируемых проектов выполняется в порядке их импорта с использованием значения первого обнаруженного атрибута DefaultTargets. Например, если проект А импортирует проект Б и проект В (в указанном порядке), а проект Б импортирует проект Д, то MSBuild сначала выполняет поиск атрибута DefaultTargets в проекте А, затем в проекте Б, затем в проекте Д и, наконец, в проекте В.

Схема импортируемого проекта идентична схеме стандартного проекта. Построение импортируемого проекта в MSBuild возможно, но вероятны сбои из-за того, что импортируемый проект обычно не содержит сведений о том, какие свойства следует установить или в каком порядке выполнять целевые объекты. Импортируемый проект получает эти сведения из проекта, в который он импортируется.

92x05xfs.alert_note(ru-ru,VS.90).gifПримечание.

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

Для того чтобы обойти эту проблему, размещайте условные импорты в TARGETS-файлах или размещайте код в условных блоках, таких как Элемент Choose (MSBuild).

Пример

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

<Project DefaultTargets="Compile"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <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>

См. также

Задачи

Как использовать одинаковый целевой объект в нескольких файлах проектов

Основные понятия

Справочные сведения о схеме файлов проектов MSBuild