Macros comunes para propiedades y comandos de MSBuild

Según las opciones de instalación, Visual Studio puede poner a su disposición cientos de macros en un proyecto de Visual Studio .vcxproj basado en MSBuild. Las macros se corresponden con las propiedades de MSBuild que se establecen de forma predeterminada, o en los archivos .props o .targets, o bien en la configuración del proyecto. Estas macros pueden usarse en cualquier parte del cuadro de diálogo Páginas de propiedades de un proyecto donde se aceptan cadenas. Estas macros no distinguen entre mayúsculas y minúsculas.

Ver las propiedades y macros actuales

Para mostrar todas las macros disponibles actualmente, abra las páginas de propiedades del proyecto en el menú principal seleccionando Propiedades del proyecto>. En el cuadro de diálogo Páginas de propiedades , elija una entrada que tenga una macro. Puede reconocer una macro por el signo de dólar y paréntesis que rodean su nombre.

Por ejemplo, en el panel izquierdo, seleccione Directorios vc++ de propiedades>de configuración y, después, en el panel derecho, seleccione Incluir directorios. El valor de Los directorios de inclusión es $(VC_IncludePath);$(WindowsSDK_IncludePath);.

El signo de dólar y los paréntesis que rodean estos dos valores indica que son macros. La expansión de esas dos macros establece los directorios de inclusión que se van a buscar.

Seleccione Incluir directorios y aparecerá una lista desplegable al final de la fila. Seleccione el botón desplegable y, a continuación, seleccione Editar. En el cuadro de diálogo Incluir directorios que aparece, seleccione el botón Macros>> .

Que expande el cuadro de diálogo para mostrar el conjunto actual de propiedades y macros visibles para Visual Studio, junto con el valor actual de cada una. Para obtener más información, consulte la sección Especificación de valores definidos por el usuario de la Referencia de la página de propiedades del proyecto de C++.

Screenshot of the Visual Studio Include Directories dialog after choosing the Macros button.

A la derecha se muestra una lista de macros de Visual Studio, como $(AllowLocalNetworkLoopback). El panel izquierdo muestra el valor evaluado de la propiedad include directory. En el panel inferior se muestran las macros expandidas, si las hay, para generar el valor de la propiedad include directory. Dado que la macro Directorios de inclusión es una combinación de dos otras macros, $(VC_IncludePath) y $(WindowsSDK_IncludePath), el panel inferior, con la etiqueta Valores heredados, enumera esas dos macros.

Lista de macros comunes

En esta tabla se describe un subconjunto de las macros disponibles que se usa con frecuencia; hay muchas más que no se incluyen aquí. Vaya al cuadro de diálogo Macros para ver todas las propiedades y sus valores actuales en el proyecto. Para obtener detalles sobre cómo se crean y usan las definiciones de propiedades de MSBuild como macros en los archivos .vcxproj, y , consulte .propsPropiedades de MSBuild.targets.

Macro Description
$(Configuration) El nombre de la configuración del proyecto actual (por ejemplo, "Depuración").
$(DevEnvDir) El directorio de instalación de Visual Studio (definido como unidad + ruta de acceso); incluye la barra diagonal inversa final (\).
$(FrameworkDir) El directorio en el que se instaló .NET Framework.
$(FrameworkSDKDir) El directorio en el que instaló .NET Framework. .NET Framework puede haberse instalado como parte de Visual Studio o por separado.
$(FrameworkVersion) La versión de .NET Framework usada por Visual Studio. Si se combina con $(FrameworkDir), es la ruta de acceso completa a la versión de .NET Framework que usa Visual Studio.
$(FxCopDir) La ruta de acceso al archivo fxcop.cmd. El archivo fxcop.cmd no está instalado en todas las ediciones de Visual Studio.
$(IntDir) Ruta de acceso al directorio especificado para los archivos intermedios. Si se trata de una ruta de acceso relativa, los archivos intermedios van a esta ruta de acceso anexados al directorio del proyecto. Esta ruta de acceso debe tener una barra diagonal inversa final (\). Se resuelve en el valor de la propiedad Intermediate Directory. No use $(OutDir) para definir esta propiedad.
$(OutDir) Ruta de acceso al directorio del archivo de salida. Si se trata de una ruta de acceso relativa, los archivos de salida van a esta ruta de acceso anexados al directorio del proyecto. Esta ruta de acceso debe tener una barra diagonal inversa final (\). Se resuelve en el valor de la propiedad Output Directory. No use $(IntDir) para definir esta propiedad.
$(Platform) El nombre de la plataforma del proyecto actual, por ejemplo, "Win32".
$(PlatformShortName) Nombre corto de la arquitectura actual, por ejemplo, "x86" o "x64".
$(ProjectDir) Directorio del proyecto (definido como unidad + ruta de acceso); incluye la barra diagonal inversa final (\).
$(ProjectExt) La extensión de archivo del proyecto. Incluye el "." antes de la extensión de archivo.
$(ProjectFileName) El nombre de archivo del proyecto (definido como nombre base + extensión de archivo).
$(ProjectName) El nombre base del proyecto.
$(ProjectPath) El nombre de ruta de acceso absoluta del proyecto (definido como unidad + ruta de acceso + nombre base + extensión de archivo).
$(PublishDir) Ubicación de salida del destino de publicación; incluye la barra diagonal inversa final (\). El valor predeterminado es la carpeta $(OutDir)app.publish\.
$(RemoteMachine) Establece en el valor de la propiedad Remote Machine en la página de propiedades de depuración. Para obtener más información, consulte Cómo cambiar la configuración del proyecto para una configuración de depuración de C/C++.
$(RootNameSpace) El espacio de nombres, si hubiera, que contiene la aplicación.
$(SolutionDir) El directorio de la solución (definido como unidad + ruta de acceso); incluye la barra diagonal inversa final (\). Solo se define cuando se compila una solución en el IDE.
$(SolutionExt) La extensión de archivo de la solución. Incluye el "." antes de la extensión de archivo. Solo se define cuando se compila una solución en el IDE.
$(SolutionFileName) El nombre de archivo de la solución (definido como nombre base + extensión de archivo). Solo se define cuando se compila una solución en el IDE.
$(SolutionName) El nombre base de la solución. Solo se define cuando se compila una solución en el IDE.
$(SolutionPath) El nombre de ruta de acceso absoluta de la solución (definido como unidad + ruta de acceso + nombre base + extensión de archivo). Solo se define cuando se compila una solución en el IDE.
$(TargetDir) Directorio del archivo de salida principal de la compilación (definido como unidad + ruta de acceso); incluye la barra diagonal inversa final (\).
$(TargetExt) La extensión de archivo del archivo de salida principal de la compilación. Incluye el "." antes de la extensión de archivo.
$(TargetFileName) El nombre de archivo del archivo de salida principal de la generación (definido como nombre base + extensión de archivo).
$(TargetName) El nombre base del archivo de salida principal de la compilación.
$(TargetPath) El nombre de ruta de acceso absoluta del archivo de salida principal de la compilación (definido como unidad + ruta de acceso + nombre base + extensión de archivo).
$(VCInstallDir) El directorio en el que se incluye el contenido de C++ de la instalación de Visual Studio. Esta propiedad contiene la versión del conjunto de herramientas de Microsoft C++ (MSVC) de destino, que podría ser diferente a la del host de Visual Studio. Por ejemplo, al compilar con $(PlatformToolset) = v140, $(VCInstallDir) contiene la ruta de acceso a la instalación de Visual Studio 2015.
$(VSInstallDir) El directorio en el que instaló Visual Studio. Esta propiedad contiene la versión del conjunto de herramientas de Visual Studio de destino, que podría ser diferente a la del host de Visual Studio. Por ejemplo, al compilar con $(PlatformToolset) = v110, $(VSInstallDir) contiene la ruta de acceso a la instalación de Visual Studio 2012.
$(WebDeployPath) La ruta de acceso relativa desde la raíz de la implementación web donde residen las salidas del proyecto.
$(WebDeployRoot) Ruta de acceso absoluta a la ubicación de <localhost>. Por ejemplo, c:\inetpub\wwwroot.

Macros obsoletas

El sistema de compilación de C++ se ha cambiado considerablemente entre Visual Studio 2008 y Visual Studio 2010. Muchas macros usadas en los tipos de proyecto anteriores cambiaron a otras nuevas. Estas macros ya no se usan o se reemplazan por uno o varios valores equivalentes de propiedades o macros de metadatos de elemento (%(item-name)). La herramienta de migración puede actualizar macros marcadas como "migradas". Si un proyecto que contiene la macro se migra de Visual Studio 2008 o anterior a Visual Studio 2010, Visual Studio convierte la macro en la macro actual equivalente. En las versiones posteriores de Visual Studio no se pueden convertir proyectos de Visual Studio 2008 y versiones anteriores al nuevo tipo de proyecto. Debe convertir estos proyectos en dos pasos: en primer lugar convertirlos a Visual Studio 2010 y, después, convertir el resultado a la versión más reciente de Visual Studio. Para obtener más información, vea Información general sobre posibles problemas de actualización.

Macro Descripción
$(InputDir) (Migrado). Directorio del archivo de entrada (definido como unidad + ruta de acceso); incluye la barra diagonal inversa final (\). Si el proyecto es la entrada, esta macro equivale a $(ProjectDir).
$(InputExt) (Migrada). Extensión del archivo de entrada. Incluye el "." antes de la extensión de archivo. Si el proyecto es la entrada, esta macro equivale a $(ProjectExt). En el caso de los archivos de origen, equivale a %(Extension).
$(InputFileName) (Migrada). Nombre del archivo de entrada (definido como nombre base + extensión de archivo). Si el proyecto es la entrada, esta macro equivale a $(ProjectFileName). En el caso de los archivos de origen, equivale a %(Identity).
$(InputName) (Migrada). Nombre base del archivo de entrada. Si el proyecto es la entrada, esta macro equivale a $(ProjectName). En el caso de los archivos de origen, equivale a %(Filename).
$(InputPath) (Migrada). Nombre de la ruta de acceso absoluta del archivo de entrada (definido como unidad + ruta de acceso + nombre base + extensión de archivo). Si el proyecto es la entrada, esta macro equivale a $(ProjectPath). En el caso de los archivos de origen, equivale a %(FullPath).
$(ParentName) Nombre del elemento que contiene este elemento de proyecto. Esta macro es el nombre de la carpeta principal o el nombre de proyecto.
$(SafeInputName) El nombre del archivo como un nombre de clase válido, sin extensión de archivo. Esta propiedad no tiene un equivalente exacto.
$(SafeParentName) El nombre del elemento primario inmediato con formato de nombre válido. Por ejemplo, un formulario es el elemento primario de un archivo .resx. Esta propiedad no tiene un equivalente exacto.
$(SafeRootNamespace) Nombre del espacio de nombres donde los asistentes para proyectos deben agregar código. Este espacio de nombres solo contiene caracteres que se permitirían en un identificador de C++ válido. Esta propiedad no tiene un equivalente exacto.

Consulte también

Proyectos de Visual Studio: C++
Guía de migración y actualización de Visual C++
Información general sobre posibles problemas de actualización
Metadatos de los elementos conocidos de MSBuild