用于 MSBuild 命令和属性的常用宏
根据你的安装选项,Visual Studio 可以在基于 MSBuild 的 .vcxproj
Visual Studio 项目中为你提供数百个宏。 这些宏对应于 MSBuild 属性,它们要么是默认设置的,要么是在 .props
或 .targets
文件中,或者在项目设置中设置的。 你可以在项目“属性页” 对话框中接受字符串的任意位置使用这些宏。 这些宏不区分大小写。
查看当前属性和宏
若要显示所有当前可用的宏,请从主菜单中选择“项目>属性”打开项目属性页。 在“属性页”对话框中,选择包含宏的条目。 可以通过括住其名称的美元符号和括号来识别宏。
例如,在左窗格中,选择“配置属性>VC++ 目录”,然后在右窗格中选择“包括目录”。 Include 目录 的值 $(VC_IncludePath);$(WindowsSDK_IncludePath);
。
美元符号和括住这两个值的括号表示它们是宏。 这两个宏的扩展设置要搜索的 include 目录。
选择“包含目录”后,下拉列表将显示在行的末尾。 选择下拉列表按钮,然后选择“编辑”。 在出现的“Include 目录”对话框中,选择“宏”>>按钮。
随即展开对话框以显示 Visual Studio 可见的当前属性集和宏,以及每个对象的当前值。 有关详细信息,请参阅 C++ 项目属性页引用的“指定用户定义的值”部分。
右侧是 Visual Studio 宏的列表,例如 $(AllowLocalNetworkLoopback)。 左窗格显示 include 目录属性的评估值。 底部窗格显示要生成 include 目录属性值的宏(如果有)。 由于 Include 目录宏是另外两个宏 $(VC_IncludePath) 和 $(WindowsSDK_IncludePath) 的组合,因此底部窗格标记为“继承值”,列出了这两个宏。
常见宏列表
下表描述了可用宏的常用子集;还有很多没有在这里列出。 转到“宏”对话框,查看项目中的所有属性及其当前值。 有关如何创建 MSBuild 属性定义以及如何在 .props
、.targets
和 .vcxproj
文件中将其用作宏的详细信息,请参阅 MSBuild 属性。
宏 | 说明 |
---|---|
$(Configuration) |
当前项目配置的名称,例如,“调试”。 |
$(DevEnvDir) |
Visual Studio 的安装目录(定义为驱动器 + 路径);包括尾随反斜杠 (\)。 |
$(FrameworkDir) |
在其中安装了 .NET Framework 的目录。 |
$(FrameworkSDKDir) |
在其中安装了 .NET Framework 的目录。 .NET Framework 可能已作为 Visual Studio 的一部分安装或已单独安装。 |
$(FrameworkVersion) |
Visual Studio 使用的.NET framework 版本。 结合 $(FrameworkDir) ,就是 Visual Studio 使用的 .NET Framework 版本的完整路径。 |
$(FxCopDir) |
fxcop.cmd 文件的路径。 fxcop.cmd 文件并未在所有 Visual Studio 版本中安装。 |
$(IntDir) |
为中间文件指定的目录路径。 如果这是一个相对路径,中间文件将转到已追加到项目目录的这一路径。 此路径应包含尾随斜杠 (\)。 它解析为“中间目录”属性的值。 请勿使用 $(OutDir) 来定义此属性。 |
$(OutDir) |
输出文件目录的路径。 如果这是一个相对路径,输出文件将转到已追加到项目目录中的这一路径。 此路径应包含尾随斜杠 (\)。 它解析为“输出目录”属性的值。 请勿使用 $(IntDir) 来定义此属性。 |
$(Platform) |
当前项目平台的名称(例如“Win32”)。 |
$(PlatformShortName) |
当前体系结构的短名称,例如“x86”或“x64”。 |
$(ProjectDir) |
项目的目录(定义为驱动器 + 路径);包括尾随反斜杠 (\)。 |
$(ProjectExt) |
项目的文件扩展名。 文件扩展名之前包括“.”。 |
$(ProjectFileName) |
项目的文件名称(定义为基名称 + 文件扩展名)。 |
$(ProjectName) |
项目的基名称。 |
$(ProjectPath) |
项目的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。 |
$(PublishDir) |
发布目标的输出位置;包括尾随反斜杠 (\)。 默认为 $(OutDir)app.publish\ 文件夹。 |
$(RemoteMachine) |
设置为“调试”属性页上 Remote Machine 属性的值。 有关详细信息,请参阅更改 C/C++ 调试配置的项目设置。 |
$(RootNameSpace) |
包含应用程序的命名空间(如果存在)。 |
$(SolutionDir) |
解决方案的目录(定义为驱动器 + 路径);包括尾随反斜杠 (\)。 仅当在 IDE 中生成解决方案时定义。 |
$(SolutionExt) |
解决方案的文件扩展名。 文件扩展名之前包括“.”。 仅当在 IDE 中生成解决方案时定义。 |
$(SolutionFileName) |
解决方案的文件名称(定义为基名称 + 文件扩展名)。 仅当在 IDE 中生成解决方案时定义。 |
$(SolutionName) |
解决方案的基名称。 仅当在 IDE 中生成解决方案时定义。 |
$(SolutionPath) |
解决方案的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。 仅当在 IDE 中生成解决方案时定义。 |
$(TargetDir) |
生成的主输出文件的目录(定义为驱动器 + 路径);包括尾随反斜杠 (\)。 |
$(TargetExt) |
生成的主输出文件的文件扩展名。 文件扩展名之前包括“.”。 |
$(TargetFileName) |
生成的主输出文件的文件名称(定义为基名称 + 文件扩展名)。 |
$(TargetName) |
生成的主输出文件的基名称。 |
$(TargetPath) |
生成的主输出文件的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。 |
$(VCInstallDir) |
包含 Visual Studio 安装的 C++ 内容的目录。 此属性包含目标 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) |
从 Web 部署根到项目输出位置的相对路径。 |
$(WebDeployRoot) |
<localhost> 位置的绝对路径。 例如 c:\inetpub\wwwroot 。 |
弃用的宏
Visual Studio 2008 和 Visual Studio 2010 之间的 C++ 生成系统已显著更改。 早期项目类型中使用的许多宏已更改为新的宏。 这些宏已不再使用,或已替换为一个或多个等效属性或项元数据宏 (%(item-name)
) 值。 迁移工具可以更新标记为“已迁移”的宏。 如果包含宏的项目从 Visual Studio 2008 或更早版本迁移到 Visual Studio 2010,Visual Studio 会将宏转换为等效的当前宏。 更高版本的 Visual Studio 无法将 Visual Studio 2008 和更低版本中的项目转换为新的项目类型。 转换这些项目必须执行两步操作;首先将这些项目转换为 Visual Studio 2010,然后将结果转换为更新版本的 Visual Studio。 有关详细信息,请参阅潜在的升级问题概述。
宏 | 说明 |
---|---|
$(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 常见的项元数据