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