Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importa el contenido de un archivo de proyecto en otro archivo de proyecto.
<Importación de proyectos><>
Syntax
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Atributos y elementos
En las secciones siguientes se describen atributos, elementos secundarios y elementos primarios.
Attributes
| Atributo | Description |
|---|---|
Project |
Atributo obligatorio. Ruta de acceso del archivo de proyecto que se va a importar. La ruta de acceso puede incluir caracteres comodín. Los archivos coincidentes se importan en orden ordenado. Con esta característica, puede agregar código a un proyecto simplemente agregando el archivo de código a un directorio. |
Condition |
Atributo opcional. Condición que se va a evaluar. Para obtener más información, vea Condiciones. |
Label |
Atributo opcional. Aplica un identificador a este elemento de importación. |
Sdk |
Atributo opcional. Hace referencia a un SDK de proyecto. |
Elementos secundarios
Ninguno
Elementos primarios
| Elemento | Description |
|---|---|
| Proyecto | Elemento raíz necesario de un archivo de proyecto de MSBuild. |
| ImportGroup | Contiene una colección de Import elementos agrupados bajo una condición opcional. |
Observaciones
Mediante el uso del Import elemento , puede reutilizar el código que es común a muchos archivos de proyecto. El uso de importaciones facilita el mantenimiento del código, ya que las actualizaciones que realice en el código compartido se propagan a todos los proyectos que lo importan.
Por convención, los archivos de proyecto importados compartidos se guardan como .targets archivos, pero son archivos de proyecto estándar de MSBuild. MSBuild no impide importar un proyecto que tenga una extensión de nombre de archivo diferente, pero se recomienda usar la .targets extensión para la coherencia.
Las rutas de acceso relativas de los proyectos importados se interpretan en relación con el directorio del proyecto de importación (con algunas excepciones descritas más adelante en este párrafo). Por lo tanto, si un archivo de proyecto se importa en varios archivos de proyecto en ubicaciones diferentes, las rutas de acceso relativas del archivo de proyecto importado se interpretarán de forma diferente para cada proyecto importado. Hay dos excepciones. Una excepción es que, en Import los elementos, la ruta de acceso siempre se interpreta en relación con el proyecto que contiene el Import elemento . Otra excepción es que siempre UsingTask interpreta la ruta de acceso relativa para el AssemblyFile atributo en relación con el archivo que contiene el UsingTask elemento .
Todas las propiedades reservadas de MSBuild relacionadas con el archivo de proyecto al que se hace referencia en un proyecto importado (por ejemplo, MSBuildProjectDirectory y MSBuildProjectFile) se asignan valores basados en el archivo de proyecto de importación.
Si el proyecto importado no tiene un DefaultTargets atributo , los proyectos importados se inspeccionan en el orden en que se importan y se usa el valor del primer atributo detectado DefaultTargets . Por ejemplo, si ProjectA importa ProjectB y ProjectC (en ese orden) y ProjectB importa ProjectD, MSBuild primero busca DefaultTargets especificado en ProjectA, luego ProjectB, ProjectD y, por último, ProjectC.
El esquema de un proyecto importado es idéntico al de un proyecto estándar. Aunque MSBuild puede crear un proyecto importado, es poco probable que un proyecto importado no contenga información sobre qué propiedades establecer o el orden en el que se van a ejecutar destinos. El proyecto importado depende del proyecto en el que se importe para proporcionar esa información.
Caracteres comodín
MSBuild permite caracteres comodín en el atributo Project. Cuando hay caracteres comodín, todas las coincidencias encontradas se ordenan (para la reproducibilidad) y, a continuación, se importan en ese orden como si el orden se hubiera establecido explícitamente.
Esto es útil si desea ofrecer un punto de extensibilidad para que otra persona pueda importar un archivo sin necesidad de agregar explícitamente el nombre de archivo al archivo de importación. Para ello, Microsoft.Common.Targets contiene la siguiente línea en la parte superior del archivo.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Example
En el ejemplo siguiente se muestra un proyecto que tiene varios elementos y propiedades e importa un archivo de proyecto general.
<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>