Compartir a través de


Elementos comunes del proyecto de MSBuild

En MSBuild, un elemento es una referencia con nombre a una o varias cadenas, como nombres de archivo. Los elementos contienen metadatos como nombres de archivo, rutas de acceso y números de versión. Todos los tipos de proyecto de Visual Studio tienen varios elementos en común. Estos elementos se definen en el archivo Microsoft.Build.CommonTypes.xsd.

En este artículo se enumeran todos los elementos de proyecto comunes definidos en MSBuild. Los elementos y propiedades proporcionados por el SDK de .NET se documentan en la referencia de MSBuild para Microsoft.Net.Sdk.

MSBuild no establece ningún valor para metadatos opcionales y los metadatos no establecidos equivalen a una cadena vacía. Por lo tanto, el valor predeterminado para los metadatos opcionales es la cadena vacía. Sin embargo, los valores de metadatos a veces se establecen en archivos del SDK que se importan implícitamente. Los valores dependen del SDK al que se hace referencia.

Reference

Representa una referencia de ensamblado de .NET (administrado) en el proyecto.

Nombre de metadatos del elemento Description
HintPath Cadena opcional. Ruta de acceso relativa o absoluta del ensamblado.
Name Cadena opcional. Nombre para mostrar del ensamblado, por ejemplo, "System.Windows.Forms".
FusionName Cadena opcional. Especifica el nombre de fusión simple o fuerte para el elemento.

Cuando este atributo está presente, puede ahorrar tiempo porque el archivo de ensamblado no tiene que abrirse para obtener el nombre de fusión.
SpecificVersion Boolean opcional. Especifica si solo se debe hacer referencia a la versión del nombre de fusión.
Aliases Cadena opcional. Cualquier alias de la referencia.
Private Boolean opcional. Especifica si la referencia se debe copiar en la carpeta de salida. Este atributo coincide con la propiedad Copy Local de la referencia que se encuentra en el IDE de Visual Studio. El valor predeterminado es false.

Note

El Reference tipo de elemento también se puede usar para hacer referencia a ensamblados de contenedor pregenerados para objetos COM nativos, por ejemplo, si usó tlbimp.exe para generar un PIA (ensamblado de interoperabilidad primario). Este tipo de referencia es una opción adecuada cuando desea generar previamente los ensamblados de contenedor COM usted mismo con entradas conocidas, en lugar de confiar en el algoritmo de MSBuild para generar contenedores COM en tiempo de compilación, lo que introduce una dependencia en el estado del registro del sistema en la máquina de compilación donde se ejecuta MSBuild.

COMReference

Representa una referencia de componente COM (no administrado) en el proyecto. La tarea ResolveComReference usa este elemento, que genera los ensamblados de contenedor o, si EmbedInteropTypes se usa, inserta los tipos de interoperabilidad en el ensamblado. El uso de este tipo de referencia introduce una dependencia en el registro del sistema en el equipo de compilación, que se usa para buscar el objeto COM al que se hace referencia. Los artefactos COM y las entradas COM del Registro pueden cambiar cuando los productos se instalan, actualizan o desinstalan en la máquina (o cuando se ejecuta la misma compilación en otra máquina), lo que puede producir un ensamblado contenedor diferente incluso si la lógica de compilación no ha cambiado.

Este elemento no se aplica a non-.NET proyectos.

Nombre de metadatos del elemento Description
Name Cadena opcional. Nombre para mostrar del componente.
Guid Cadena necesaria. GUID del componente, con el formato {12345678-1234-1234-1234-123456781234}.
VersionMajor Cadena necesaria. La parte principal del número de versión del componente. Por ejemplo, "5" si el número de versión completo es "5.46".
VersionMinor Cadena necesaria. Parte secundaria del número de versión del componente. Por ejemplo, "46" si el número de versión completo es "5.46".
EmbedInteropTypes Boolean opcional. Si es true, inserte los tipos de interoperabilidad de esta referencia directamente en el ensamblado en lugar de generar un archivo DLL de interoperabilidad.
Lcid Cadena opcional. LocaleID del componente.
WrapperTool Cadena opcional. Nombre de la herramienta contenedora que se usa en el componente. Los valores son:

1. principal
2. tlbimp
3. primaryortlbimp
4. aximp
Isolated Boolean opcional. Especifica si el componente es un componente sin reg. El valor predeterminado es false.

Consulte Solución de problemas de referencias COM.

COMFileReference

Representa una lista de bibliotecas de tipos a las que se va a hacer referencia mediante la ruta de acceso del archivo, en lugar de usar el registro del sistema. Este tipo de referencia puede ser una buena alternativa a COMReference en los casos en los que quiera evitar una dependencia en el registro del equipo de compilación, ya sea porque la cuenta que ejecuta la compilación no tiene privilegios elevados para editar el registro en el servidor de compilación o no quiere que la compilación tenga una dependencia del estado del registro. Si usa COMFileReference para hacer referencia a un artefacto en una ruta de acceso del sistema, la compilación tiene una dependencia en el estado del sistema. Si el artefacto del sistema cambia debido a un cambio en el estado del sistema, como cuando los productos se instalan, actualizan o desinstalan (o si ejecuta la misma compilación en otra máquina), el ensamblado contenedor puede cambiar, incluso si la lógica de compilación no ha cambiado. Para garantizar un resultado de compilación coherente, puede almacenar en caché una copia conocida del artefacto COM en un lugar que controle, como en la carpeta del proyecto o la solución, y hacer referencia a ella en lugar del artefacto del sistema.

Este elemento no se aplica a non-.NET proyectos.

Nombre de metadatos del elemento Description
EmbedInteropTypes Boolean opcional. Si es true, inserte los tipos de interoperabilidad de esta referencia directamente en el ensamblado en lugar de generar un archivo DLL de interoperabilidad. El valor predeterminado es False.
WrapperTool Cadena opcional. Nombre de la herramienta contenedora que se usa en el componente. Los valores son:

1. principal
2. tlbimp
3. primaryortlbimp
4. aximp

Consulte Solución de problemas de referencias COM.

NativeReference

Representa un archivo de manifiesto nativo o una referencia a este archivo.

Nombre de metadatos del elemento Description
Name Cadena necesaria. Nombre base del archivo de manifiesto.
HintPath Cadena necesaria. Ruta de acceso relativa del archivo de manifiesto.

ProjectReference

Representa una referencia a otro proyecto. ProjectReference Los elementos se transforman en elementos de referencia por el ResolveProjectReferences destino, por lo que los metadatos válidos de una referencia pueden ser válidos en ProjectReference, si el proceso de transformación no lo sobrescribe.

Nombre de metadatos del elemento Description
Name Cadena opcional. Nombre para mostrar de la referencia.
GlobalPropertiesToRemove Opcional string[]. Nombres de propiedades que se van a quitar al compilar el proyecto al que se hace referencia, por ejemplo, RuntimeIdentifier;PackOnBuild. El valor predeterminado es vacío.
Project Cadena opcional. GUID de la referencia, con el formato {12345678-1234-1234-1234-123456781234}.
OutputItemType Cadena opcional. Tipo de elemento en el que se van a emitir salidas de destino. El valor predeterminado está en blanco. Si los metadatos de referencia se establecen en "true" (valor predeterminado), las salidas de destino se convierten en referencias para el compilador.
ReferenceOutputAssembly Boolean opcional. Si se establece falseen , no incluye la salida del proyecto al que se hace referencia como referencia de este proyecto, pero garantiza que el otro proyecto se compile antes de este. El valor predeterminado es true.
BuildReference Boolean opcional. El valor predeterminado es true. Si se establece falseen , MSBuild no compilará esta clase ProjectReference. No se llamará a sus destinos predeterminados (consulte "Destinos" a continuación).
Private Boolean opcional. Especifica si la referencia se debe copiar en la carpeta de salida. Este atributo coincide con la propiedad Copy Local de la referencia que se encuentra en el IDE de Visual Studio.
SetConfiguration Cadena opcional. Establece la propiedad global Configuration para el proyecto al que se hace referencia, por ejemplo, Configuration=Release.
SetPlatform Cadena opcional. Establece la propiedad global Platform para el proyecto al que se hace referencia, por ejemplo, Platform=AnyCPU.
SetTargetFramework Cadena opcional. Establece la propiedad global TargetFramework para el proyecto al que se hace referencia, por ejemplo, TargetFramework=netstandard2.0.
SkipGetTargetFrameworkProperties Boolean opcional. Si true, compila el proyecto al que se hace referencia sin negociar el valor de TargetFramework más compatible. El valor predeterminado es false.
Targets Opcional string[]. Lista separada por punto y coma de destinos en los proyectos a los que se hace referencia que se deben compilar. Default es el valor de $(ProjectReferenceBuildTargets), que tiene como valor predeterminado vacío, lo que indica los destinos predeterminados. Al compilar en Visual Studio (en lugar de MSBuild.exe o dotnet build), especificar esto no impide que Visual Studio compile los destinos predeterminados del proyecto al que se hace referencia.

Note

Hay una diferencia entre el funcionamiento de las referencias de proyecto entre .NET Framework y .NET Core (incluido .NET 5 y versiones posteriores). En los proyectos de .NET Framework, las referencias de proyecto no son transitivas. Es decir, si Project1 hace referencia a Project2 y Project2 hace referencia a Project3, no se puede codificar en Project3 desde Project1. Sin embargo, en .NET Core (incluido .NET 5 y versiones posteriores), las referencias de proyecto son transitivas. Puede codificar en Project3 en Project1.

Compile

Representa los archivos de origen del compilador.

Nombre de metadatos del elemento Description
DependentUpon Cadena opcional. Especifica que el archivo de este archivo depende de que se compile correctamente.
AutoGen Boolean opcional. Indica si el entorno de desarrollo integrado (IDE) de Visual Studio generó el archivo para el proyecto. El valor predeterminado es false.
Link Cadena opcional. Ruta de acceso notational que se mostrará cuando el archivo se encuentra físicamente fuera de la influencia del archivo del proyecto.
Visible Boolean opcional. Indica si se va a mostrar el archivo en el Explorador de soluciones en Visual Studio. El valor predeterminado es true.
CopyToOutputDirectory Cadena opcional. Determina si se va a copiar el archivo en el directorio de salida. Los valores son:

1. Nunca
2. Siempre
3. ConservarNuevo más
4. IfDifferent

El valor predeterminado es Never si DefineExplicitDefaults se establece en true; de lo contrario, el valor predeterminado es la cadena vacía.

EmbeddedResource

Representa los recursos que se van a incrustar en el ensamblado generado.

Nombre de metadatos del elemento Description
Culture Cadena opcional. Especifica la referencia cultural del archivo de recursos. Si se especifica, el proceso de compilación no deduce automáticamente la referencia cultural basada en la extensión de archivo (que depende de las referencias culturales disponibles para .NET/OS en el equipo que hospeda la compilación). Se recomienda encarecidamente establecer Culture={culture identifier} o WithCulture=false metadatos.
WithCulture Bool opcional. Especifica que el archivo es independiente de la referencia cultural y la detección de referencia cultural por AssignCulture tarea debe omitirse. Se recomienda encarecidamente establecer Culture={culture identifier} o WithCulture=false metadatos.
DependentUpon Cadena opcional. Especifica que el archivo de este archivo depende de que se compile correctamente.
Generator Cadena opcional. Nombre de cualquier generador de archivos que se ejecute en este elemento.
LastGenOutput Cadena opcional. Nombre del archivo creado por cualquier generador de archivos que se ejecutó en este elemento.
CustomToolNamespace Cadena opcional. Espacio de nombres en el que cualquier generador de archivos que se ejecute en este elemento debe crear código.
Link Cadena opcional. La ruta de acceso notational se muestra si el archivo se encuentra físicamente fuera de la influencia del proyecto.
Visible Boolean opcional. Indica si se va a mostrar el archivo en el Explorador de soluciones en Visual Studio.
CopyToOutputDirectory Cadena opcional. Determina si se va a copiar el archivo en el directorio de salida. Los valores son:

1. Nunca
2. Siempre
3. ConservarNuevo más
4. IfDifferent

El valor predeterminado es Never si DefineExplicitDefaults se establece en true; de lo contrario, el valor predeterminado es la cadena vacía.
LogicalName Cadena necesaria. Nombre lógico del recurso incrustado.

Content

Representa los archivos que no se compilan en el proyecto, pero que se pueden incrustar o publicar junto con él.

Nombre de metadatos del elemento Description
DependentUpon Cadena opcional. Especifica que el archivo de este archivo depende de que se compile correctamente.
Generator Cadena opcional. Nombre de cualquier generador de archivos que se ejecute en este elemento.
LastGenOutput Cadena opcional. Nombre del archivo creado por cualquier generador de archivos que se ejecutó en este elemento.
CustomToolNamespace Cadena opcional. Espacio de nombres en el que cualquier generador de archivos que se ejecute en este elemento debe crear código.
Link Cadena opcional. Ruta de acceso notational que se mostrará si el archivo se encuentra físicamente fuera de la influencia del proyecto.
PublishState Cadena necesaria. Estado de publicación del contenido, ya sea:

-Predeterminado
-Incluido
-Excluidos
- DataFile
-Prerrequisito
IsAssembly Boolean opcional. Especifica si el archivo es un ensamblado.
Visible Boolean opcional. Indica si se va a mostrar el archivo en el Explorador de soluciones en Visual Studio.
CopyToOutputDirectory Cadena opcional. Determina si se va a copiar el archivo en el directorio de salida. Los valores son:

1. Nunca
2. Siempre
3. ConservarNuevo más
4. IfDifferent

El valor predeterminado es Never si DefineExplicitDefaults se establece en true; de lo contrario, el valor predeterminado es la cadena vacía.
TargetPath Cadena opcional. Ruta de acceso de salida (relativa al directorio de salida específico de la configuración o plataforma) de un elemento, incluido el nombre de archivo. Esto respeta los metadatos de Link, si se proporcionan. Si no se proporciona TargetPath, se calcula durante el proceso de compilación. Consulte AssignTargetPath.

None

Representa los archivos que no deben tener ningún rol en el proceso de compilación.

Nombre de metadatos del elemento Description
DependentUpon Cadena opcional. Especifica que el archivo de este archivo depende de que se compile correctamente.
Generator Cadena opcional. Nombre de cualquier generador de archivos que se ejecute en este elemento.
LastGenOutput Cadena opcional. Nombre del archivo creado por cualquier generador de archivos que se ejecutó en este elemento.
CustomToolNamespace Cadena opcional. Espacio de nombres en el que cualquier generador de archivos que se ejecute en este elemento debe crear código.
Link Cadena opcional. Ruta de acceso notational que se mostrará si el archivo se encuentra físicamente fuera de la influencia del proyecto.
Visible Boolean opcional. Indica si se va a mostrar el archivo en el Explorador de soluciones en Visual Studio.
CopyToOutputDirectory Cadena opcional. Determina si se va a copiar el archivo en el directorio de salida. Los valores son:

1. Nunca
2. Siempre
3. ConservarNuevo más
4. IfDifferent

El valor predeterminado es Never si DefineExplicitDefaults se establece en true; de lo contrario, el valor predeterminado es la cadena vacía.

AssemblyMetadata

Representa los atributos de ensamblado que se van a generar como [AssemblyMetadata(key, value)].

Nombre de metadatos del elemento Description
Include Se convierte en el primer parámetro (la clave) del constructor de atributos AssemblyMetadataAttribute.
Value Cadena necesaria. Se convierte en el segundo parámetro (el valor) del constructor de atributos AssemblyMetadataAttribute.

Note

Este elemento se aplica a los proyectos que usan el SDK para .NET 5 (y .NET Core) y versiones posteriores.

InternalsVisibleTo

Especifica los ensamblados que se van a emitir como atributos de ensamblado [InternalsVisibleTo(..)].

Nombre de metadatos del elemento Description
Include Nombre del ensamblado.
Key Cadena opcional. Clave pública del ensamblado.

Note

Este elemento se aplica a los proyectos que usan el SDK para .NET 5 (y .NET Core) y versiones posteriores.

BaseApplicationManifest

Representa el manifiesto de aplicación base para la compilación y contiene información de seguridad de implementación clickOnce.

CodeAnalysisImport

Representa el proyecto FxCop que se va a importar.

Import

Representa ensamblados cuyos espacios de nombres deben importar el compilador de Visual Basic.

Folder

Visual Studio solo usa este elemento como marcador de posición para una carpeta vacía. Cuando se rellena la carpeta, se reemplaza por otro elemento.

Consulte también