Общие макросы для команд и свойств MSBuild

В зависимости от параметров установки Visual Studio может сделать сотни макросов доступными для вас в проекте Visual Studio на основе .vcxproj MSBuild. Макросы соответствуют свойствам MSBuild, заданным по умолчанию или файлам .props.targets или параметрам проекта. Эти макросы можно использовать в любом месте диалогового окна Страницы свойств проекта, где допустимы строки. Эти макросы не учитывает регистр.

Просмотр текущих свойств и макросов

Чтобы отобразить все доступные макросы, откройте страницы свойств проекта в главном меню, выбрав "Свойства проекта>". В диалоговом окне "Страницы свойств" выберите запись с макросом. Макрос можно распознать по знаку доллара и скобкам, окружающим его имя.

Например, в левой области выберите "Свойства>конфигурации" каталогов VC++, а затем в правой области выберите "Включить каталоги". Значением для каталогов Include является $(VC_IncludePath);$(WindowsSDK_IncludePath);.

Знак доллара и скобки, окружающие эти два значения, указывают на то, что они макросы. Расширение этих двух макросов задает каталоги включения для поиска.

Выберите " Включить каталоги " и раскрывающийся список появится в конце строки. Нажмите кнопку раскрывающегося списка, а затем нажмите кнопку "Изменить". В появившемся диалоговом окне "Включить каталоги" нажмите кнопку "Макросы>>".

Это расширяет диалоговое окно, чтобы отобразить текущий набор свойств и макросов, видимых Visual Studio, а также текущее значение для каждого. Дополнительные сведения см. в разделе "Указание определяемых пользователем значений" на странице свойств проекта C++ .

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

Справа находится список макросов Visual Studio, таких как $(AllowLocalNetworkLoopback). В левой области показано вычисляемое значение свойства include directory. В нижней области показано, какие макросы были развернуты(если таковые имеются), чтобы создать значение свойства каталога. Так как макрос "Включить каталоги" представляет собой сочетание двух других макросов , $(VC_IncludePath) и $(WindowsSDK_IncludePath), нижней панели, помеченной как унаследованные значения, перечисляются эти два макроса.

Список общих макросов

В этой таблице описывается часто используемое подмножество доступных макросов; Здесь еще много не перечислены. Перейдите в диалоговое окно "Макросы" , чтобы просмотреть все свойства и их текущие значения в проекте. Дополнительные сведения о создании и использовании определений свойств MSBuild в качестве макросов в , .targetsа также .vcxproj файлах см. в .propsразделе "Свойства MSBuild".

Макрос Description
$(Configuration) Имя текущей конфигурации проекта, например "Debug".
$(DevEnvDir) Каталог установки Visual Studio (определяется как диск + путь); включает конечную обратную косую черту (\).
$(FrameworkDir) Каталог, в котором установлена платформа .NET Framework.
$(FrameworkSDKDir) Каталог, в котором установлена платформа .NET Framework. Возможно, платформа .NET Framework были установлены как часть Visual Studio или отдельно.
$(FrameworkVersion) Версия платформы .NET Framework, используемая Visual Studio. В сочетании с $(FrameworkDir)полным путем к версии платформа .NET Framework, используемой Visual Studio.
$(FxCopDir) Путь к файлу fxcop.cmd. Файл fxcop.cmd не установлен во всех выпусках Visual Studio.
$(IntDir) Путь к каталогу, заданному для промежуточных файлов. Если это относительный путь, промежуточные файлы переходят к этому пути, добавленным в каталог проекта. Этот путь должен иметь конечную обратную косую черту (\). Он разрешает значение свойства Промежуточного каталога . Не используйте $(OutDir) для определения этого свойства.
$(OutDir) Путь к каталогу выходных файлов. Если это относительный путь, выходные файлы переходят к этому пути, добавленному в каталог проекта. Этот путь должен иметь конечную обратную косую черту (\). Он разрешает значение свойства Output Directory . Не используйте $(IntDir) для определения этого свойства.
$(Platform) Имя текущей платформы проекта, например Win32.
$(PlatformShortName) Короткое имя текущей архитектуры, например x86 или x64.
$(ProjectDir) Каталог проекта (определяется как диск + путь); включает конечную обратную косую черту (\).
$(ProjectExt) Расширение файла проекта. Включает символ "." перед расширением файла.
$(ProjectFileName) Имя файла проекта (определяется как базовое имя + расширение файла).
$(ProjectName) Базовое имя проекта.
$(ProjectPath) Абсолютный путь к проекту (определяется как диск + путь + базовое имя + расширение файла).
$(PublishDir) Расположение выходных данных для целевого объекта публикации; включает конечную обратную косую черту (\). По умолчанию используется $(OutDir)app.publish\ папка.
$(RemoteMachine) Задайте значение свойства Remote Machine на странице свойств отладки. Дополнительные сведения см. в разделе "Изменение Параметры проекта" для конфигурации отладки C/C++.
$(RootNameSpace) Пространство имен (при наличии), содержащее приложение.
$(SolutionDir) Каталог решения (определенный как диск + путь); включает конечную обратную косую черту (\). Он определяется только при сборке решения в интегрированной среде разработки.
$(SolutionExt) Расширение файла решения. Включает символ "." перед расширением файла. Он определяется только при сборке решения в интегрированной среде разработки.
$(SolutionFileName) Имя файла решения (определяется как базовое имя + расширение файла). Он определяется только при сборке решения в интегрированной среде разработки.
$(SolutionName) Базовое имя решения. Он определяется только при сборке решения в интегрированной среде разработки.
$(SolutionPath) Абсолютный путь к решению (определяется как диск + путь + базовое имя + расширение файла). Он определяется только при сборке решения в интегрированной среде разработки.
$(TargetDir) Каталог первичного выходного файла сборки (определяется как диск + путь); включает конечную обратную косую черту (\).
$(TargetExt) Расширение имени основного выходного файла сборки. Включает символ "." перед расширением файла.
$(TargetFileName) Имя основного выходного файла для сборки (определяется как базовое имя + расширение файла).
$(TargetName) Базовое имя основного выходного файла сборки.
$(TargetPath) Абсолютный путь к основному выходному файлу для сборки (определяется как диск + путь + базовое имя + расширение файла).
$(VCInstallDir) Каталог с содержимым C++ из установки Visual Studio. Это свойство содержит версию целевого набора инструментов Microsoft C++ (MSVC), который может отличаться от используемого в узле Visual Studio. Например, при сборке с $(PlatformToolset) = v140помощью содержит $(VCInstallDir) путь к установке Visual Studio 2015.
$(VSInstallDir) Каталог, в котором установлено программное обеспечение Visual Studio. Это свойство содержит версию целевого набора инструментов Visual Studio, которая может отличаться от основного приложения Visual Studio. Например, при сборке с $(PlatformToolset) = v110помощью содержит $(VSInstallDir) путь к установке Visual Studio 2012.
$(WebDeployPath) Относительный путь от корня веб-развертывания до каталога выходных данных проекта.
$(WebDeployRoot) Абсолютный путь к расположению <localhost>. Например, c:\inetpub\wwwroot.

Устаревшие макросы

Система сборки для C++ была значительно изменена между Visual Studio 2008 и Visual Studio 2010. Многие макросы, используемые в предыдущих типах проектов, изменились на новые. Эти макросы больше не используются или заменяются одним или несколькими эквивалентными свойствами или значениями макроса%(item-name) метаданных элемента. Средство миграции может обновить макросы, помеченные как "перенесенные". Если проект, содержащий макрос, переносится из Visual Studio 2008 или более ранней версии в Visual Studio 2010, Visual Studio преобразует макрос в эквивалентный текущий макрос. Более поздние версии Visual Studio не могут преобразовывать проекты с Visual Studio 2008 и более ранних версий в новые типы проектов. Необходимо преобразовать эти проекты в два этапа — сначала преобразуйте их в Visual Studio 2010, а затем преобразуйте результат для более новой версии Visual Studio. Дополнительные сведения см. в статье Общие сведения о возможных проблемах, возникающих при обновлении.

Макрос Description
$(InputDir) (Перенесено.) Каталог входного файла (определяется как диск + путь); включает конечную обратную косую черту (\). Если проект является входным, этот макрос эквивалентен $(ProjectDir).
$(InputExt) (Перенесено.) Расширение файла ввода. Включает символ "." перед расширением файла. Если проект является входным, этот макрос эквивалентен $(ProjectExt). Для исходных файлов это эквивалентно %(Extension).
$(InputFileName) (Перенесено.) Имя файла ввода (определяется как базовое имя и расширение файла). Если проект является входным, этот макрос эквивалентен $(ProjectFileName). Для исходных файлов это эквивалентно %(Identity).
$(InputName) (Перенесено.) Базовое имя входного файла. Если проект является входным, этот макрос эквивалентен $(ProjectName). Для исходных файлов это эквивалентно %(Filename).
$(InputPath) (Перенесено.) Абсолютное имя входного файла (определяется как диск + путь + базовое имя + расширение файла). Если проект является входным, этот макрос эквивалентен $(ProjectPath). Для исходных файлов это эквивалентно %(FullPath).
$(ParentName) Имя элемента, содержащего данный элемент проекта. Этот макрос — это имя родительской папки или имя проекта.
$(SafeInputName) Имя файла как допустимое имя класса (без расширения файла). Это свойство не имеет точного эквивалента.
$(SafeParentName) Имя непосредственного родителя в допустимом формате. Например, форма является родительским элементом .resx файла. Это свойство не имеет точного эквивалента.
$(SafeRootNamespace) Имя пространства имен, в котором мастера проекта должны добавить код. Это имя пространства имен содержит только символы, которые разрешены в допустимом идентификаторе C++. Это свойство не имеет точного эквивалента.

См. также

Проекты Visual Studio — C++
Руководство по переносу и обновлению Visual C++
Общие сведения о возможных проблемах, возникающих при обновлении
Общеизвестные метаданные элементов MSBuild