Compartir a través de


Elemento Import (MSBuild)

Actualización: noviembre 2007

Importa el contenido de un archivo de proyecto en otro archivo de proyecto.

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

Atributos y elementos

En las siguientes secciones se describen los atributos, elementos secundarios y elementos primarios.

Atributos

Atributo

Descripción

Project

Atributo requerido.

Ruta de acceso del archivo de proyecto que desea importar.

Condition

Atributo opcional.

Condición que se va a evaluar. Para obtener más información, vea Condiciones de MSBuild.

Elementos secundarios

Ninguna

Elementos primarios

Elemento

Descripción

Proyecto

Elemento raíz necesario de un archivo de proyecto de MSBuild.

Comentarios

El elemento Import permite reutilizar el código que sea común a muchos archivos de proyecto. Mover los bloques comunes de código a otros archivos de proyecto permite mantener el código y propagar los cambios en una ubicación central. Por ejemplo, el Proyecto A y el Proyecto B establecen los valores de los elementos y propiedades específicos para la compilación, y el Proyecto C contiene los procesos comunes de compilación. El Proyecto A y el Proyecto B pueden importar el Proyecto C y cualquier cambio a los procesos de generación sólo se realiza en un archivo.

Los archivos de proyecto importados comunes se guardan como archivos .targets por convención, pero son archivos de proyecto estándar de MSBuild. MSBuild no impide que se pueda importar un proyecto con una extensión de archivo diferente, pero se recomienda utilizar la extensión de archivo .targets por cuestión de coherencia.

Todas las rutas de acceso relativas de los proyectos importados se interpretan en función del directorio del proyecto importado. Por tanto, si un archivo de proyecto se importa en varios archivos de proyecto situados en ubicaciones diferentes, estas rutas relativas se interpretarán de manera diferente en cada proyecto importado.

Todas las propiedades reservadas de MSBuild relacionadas con el archivo de proyecto, por ejemplo, MSBuildProjectDirectory y MSBuildProjectFile, a las que se hace referencia en un proyecto importado tienen valores asignados en función del archivo de proyecto de importación.

Si el proyecto importando no tiene un atributo DefaultTargets, los proyectos importados se inspeccionan en el orden en que se importaron y se utilizará el valor del primer atributo DefaultTargets detectado. Por ejemplo, si el Proyecto A importa el Proyecto B y el Proyecto C (en este orden), y el Proyecto B importa el Proyecto D, MSBuild buscará primero los DefaultTargets especificados en el Proyecto A, luego en el Proyecto B, luego en el Proyecto D y, por último, en el Proyecto C.

El esquema de un proyecto importado es idéntico al de un proyecto estándar. Puede que MSBuild pueda generar un proyecto importado pero la compilación no se realizará correctamente porque el proyecto importado generalmente no contiene información sobre qué propiedades establecer o el orden a seguir para ejecutar los destinos. El proyecto importado depende del proyecto en el que se importa para proporcionar esa información.

Nota

Aunque las instrucciones de importación condicionales funcionan en compilaciones de MSBuild de la línea de comandos, no funcionan con un MSBuild hospedado en el entorno de desarrollo integrado (IDE) de Visual Studio. Las importaciones condicionales se evalúan utilizando la configuración inicial y los valores predeterminados de la plataforma establecidos al cargar el proyecto. Si posteriormente se realizan cambios que requieren una reevaluación de las instrucciones condicionales en el archivo de proyecto, como un cambio de la plataforma, Visual Studio vuelve a evaluar las condiciones en las propiedades y elementos, pero no las importaciones. Debido a que no se vuelve a evaluar las instrucciones condicionales de importación, la importación se omite.

Para solucionarlo, coloque las importaciones condicionales en los archivos .targets o coloque código en bloques condicionales, por ejemplo, un bloque Elemento Choose (MSBuild).

Ejemplo

En el ejemplo de código siguiente se muestra un proyecto que establece varios elementos y propiedades e importa un archivo de proyecto general.

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

Vea también

Tareas

Cómo: Utilizar el mismo destino en varios archivos de proyecto

Conceptos

Referencia de esquemas del archivo de proyecto MSBuild