我试图将Visual Studio 2013 Update 4解决方案中某些C++项目中的某些属性分解到单独的属性文件中,然后将其导入到vcxproj文件中。这样做之后,我注意到属性似乎不再反映在属性编辑器 GUI 中。例如,如果我从某个文件导入它
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
属性 GUI 中的"字符集"项不是直接在 vcxproj 文件中定义,而是显示为空白。但是,属性 GUI 中的C++命令行确实包含"/D "_UNICODE"/D "UNICODE"',因此看起来该属性正在被注意到并生效。
那么这只是一个GUI的事情,还是做这样的事情会导致东西无法正确构建?我的猜测是Visual Studio会查找像"这样的元素,但只直接在vcxproj文件中这样做,而不是在它导入的任何内容中。
2015、2017 和 2019 仅从项目文件本身中的项创建可视化和可编辑选项的列表。
包含文件中的项仅用作配置选项的默认值。处理和使用包含文件中的值,即使它们未在 GUI 中可视化。
要在 GUI 中查看某些内容,您必须.vcxproj文件中至少添加空的相应项目。
例如,要查看主配置,您需要添加空的"属性组" 带有标签"配置"(对于每个项目配置)到.vcxproj文件:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
</PropertyGroup>
若要查看名称、输出文件的位置和其他常规属性,请添加不带标签的空"属性组":
<PropertyGroup />
要查看 C/C++ 编译器、链接器和库设置,请将"ItemDefinitionGroup"与"ClCompile"、"Link"和"Lib"项添加到.vcxproj文件中:
<ItemDefinitionGroup>
<ClCompile />
<Link />
<Lib />
</ItemDefinitionGroup>
如果将此处提到的所有内容添加到.vcxproj文件中,您将在 GUI 中看到所有 C/C++ 设置,并且您将能够更改它们。
如果您正确使用"属性表",您可以在VS的Property Manager
窗口中看到它们,按层次结构排列,包括其中包含的选项。这真的非常方便。
我猜您现在手动修改了 vcxproj 并添加了Import
.虽然这也可以工作(如您所见,反映在命令行中),但它不能很好地与 VS 一起使用。因此,不要这样做,而是还原您的更改并转到属性管理器并在那里添加一些属性文件。VS 将在正确的位置为您创建 Import 语句,并应照常显示所有属性。