MSBuild缩短vcxproj文件中的配置管理 Windows版本:Microsoft Windows[Version 10.0.14393] MSBuild版本:Microsoft(R)-Buildmodul,版本15.1.1012.6693 该项目是用C编写的

MSBuild缩短vcxproj文件中的配置管理 Windows版本:Microsoft Windows[Version 10.0.14393] MSBuild版本:Microsoft(R)-Buildmodul,版本15.1.1012.6693 该项目是用C编写的,msbuild,vcxproj,Msbuild,Vcxproj,在这个项目的*.vcxproj文件中有很多这样的代码 <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> [do some stuff] </ImportGroup> [做些事情] 对于所有配置,'Debug | Win32','Release | Win32','Debug | x64','Release | x64'。但是对于所有的组合我都有相同的配置,因此我不想写4

在这个项目的
*.vcxproj
文件中有很多这样的代码

<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  [do some stuff]
</ImportGroup>

[做些事情]
对于所有配置,
'Debug | Win32'
'Release | Win32'
'Debug | x64'
'Release | x64'
。但是对于所有的组合我都有相同的配置,因此我不想写4次,使我的项目文件长3倍,可读性差


是否有类似于
Condition=“”$(配置)|$(平台)的快捷方式“=='Any Configuration | Any Architecture'

您可以删除
条件
属性,并将导入组应用于每个配置。

您可以删除
条件
属性,并将导入组应用于每个配置。

执行此操作的标准方法是使用“”;更具体:一个属性表,包含所有平台/配置组合导入的公共选项。选择此方法的一些原因:

  • 它完全满足了您的“我将对所有组合使用相同的配置,因此我不想编写4次,使我的项目文件更长3倍,可读性更低”的要求,以及更多要求:它将公共选项保留在一个文件中,其他项目也可以继续使用该文件(如果您有多个项目,并且希望为它们提供相同的选项,那么这确实是第一卖点)
  • 它具有编辑用户界面支持(尽管如果您想手动编辑vcxproj以添加它,这没有问题)
  • 它保持了标准项目结构的完整性,因此仍然允许在需要时对每个配置和每个平台进行修改
  • 属性表与其他任何文件一样,只是msbuild文件,因此可以导入其他文件,以便您可以使用它们创建层次结构,执行诸如基于应用程序类型(exe/dll)设置不同输出路径的主文件等操作

执行此操作的标准方法是使用“”;更具体的是:一个属性表,其中包含由所有平台/配置组合导入的通用选项。选择此方法的一些原因:

  • 它完全满足了您的“我将对所有组合使用相同的配置,因此我不想编写4次,使我的项目文件更长3倍,可读性更低”的要求,以及更多要求:它将公共选项保留在一个文件中,其他项目也可以继续使用该文件(如果您有多个项目,并且希望为它们提供相同的选项,那么这确实是第一卖点)
  • 它具有编辑用户界面支持(尽管如果您想手动编辑vcxproj以添加它,这没有问题)
  • 它保持了标准项目结构的完整性,因此仍然允许在需要时对每个配置和每个平台进行修改
  • 属性表与其他任何文件一样,只是msbuild文件,因此可以导入其他文件,以便您可以使用它们创建层次结构,执行诸如基于应用程序类型(exe/dll)设置不同输出路径的主文件等操作

这是我昨天尝试的方式,似乎很有效。虽然我认为@stijn答案是更“专业”的方式,这就是为什么我接受了他的答案;但我还是投票支持了你的答案;)谢谢!stijn的答案非常详细。我也会把它标记为一个答案!)干得好@stijn!这是我昨天尝试的方式,似乎很有效。虽然我认为@stijn的答案更“专业”,这就是为什么我接受了他的答案;但我还是投了你的票;)谢谢!stijn的答案非常详细。我也会把它作为一个答案!;)干得好@stijn!