当前位置: 首页 > news >正文

Visual Studio 命令和属性的常用宏定义(macros for MSBuild commands and properties)

MSBuild 命令和属性的宏

根据Visual Studio的安装选项,Visual Studio 可以在基于 MSBuild 的 .vcxproj Visual Studio 项目中提供数百个宏。

这些宏对应于 MSBuild属性,它们要么是默认设置的,要么是在 .props 或 .targets 文件中,或者在项目设置中设置的。

这些宏可以帮助我们对项目进行一些增强性的配置。

例如在一个C++项目中,我们可以看到如下配置,这里就是使用了

image

它最后的路径是动态计算出来的

image

我们可以在项目“属性页”对话框中接受字符串的任意位置使用这些宏。 这些宏不区分大小写。

我们也可以点击【宏】按钮,来查看所有预计算的

image

什么时候使用这些宏定义

举个简单的例子来说,假设我现在创建一个C#解决方案,里面有两个项目A和B。

如果我想把B的输出路径配置到A的输出路径下:

1、如果我们使用绝对路径,那项目在移动位置时,将会导致输出路径错误

2、如果我们使用相对路径,那不可避免要向上级寻找目录,可能就会出现../../../xxx/bin/Debug这样的路径。可读性就会降低

如果我们使用MSBuild,就可以写成如下路径

1 $(SolutionDir)A\bin\Debug\

这样不管项目路径如何改变,都可以自动计算出相应的位置。

这只是一个简单的举例,具体还需要根据项目实际场景去使用这些宏定义。

另外还需要注意的:在C#项目属性中,我们无法在界面上看到这些宏定义,但是仍然可以使用它们。

例如在一个.NET 8的WPF工程中,我们可以将当前项目输出到同一个解决方案下WpfApp17的输出路径

image

常见宏列表

说明
$(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


参考资料:

https://learn.microsoft.com/en-us/cpp/build/reference/common-macros-for-build-commands-and-properties?view=msvc-170

http://www.dtcms.com/a/490623.html

相关文章:

  • Android 中 gravity 与 layout_gravity 的深度解析:从概念到实践
  • 免费的招标网站有哪些wordpress编辑器上传图片
  • Spring初始
  • VB.Net循序渐进(第二版)
  • AI预判等离子体「暴走」,MIT等基于机器学习实现小样本下的等离子体动力学高精度预测
  • 网站链接推广工具网站提现功能怎么做
  • list的迭代器
  • 学会网站制作要多久网站建设最重要的是什么
  • 基于遗传算法优化BP神经网络(GA-BP)的数据时序预测
  • Mamba革命:图像增强的下一站,从CNN与Transformer到状态空间模型的跨
  • 利用Enterprise Architect的需求管理工具实现项目全程可追溯性
  • 我的个人云端革命:从依赖公有云到自建私有云的蜕变
  • Qi标准无线充调试记录
  • 数据结构5:线性表5-循环链表
  • 双生态城市:跨物种和谐共居的未来图景-光影交织的和谐之地
  • 合肥 做网站的百度网页大全
  • 安徽建设厅网站官网网站设计制作系统哪个好
  • 【electron6】Web Audio + AudioWorklet PCM 实时采集噪音和模拟调试
  • Ajax 详解
  • 网站开发表格wordpress 语法编辑
  • 《零踩坑教程:基于 Trae 的高德地图 API 部署全流程解析》
  • 在Linux服务器上使用Jenkins和Poetry实现Python项目自动化
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(3):文法運用
  • [Sora] 数据管理 | `group_by_bucket`智能分桶 | DataloaderForVideo数据传输
  • 反向代理原理和服务转发实现方式
  • 中山企业网站多少钱爱奇艺做视频网站的
  • mapper.xml sql动态表查询配置
  • SQL Server 2019实验 │ 设计数据库的完整性
  • Leetcode每日一练--35
  • IDEA项目上传Gitee