vcxproj文件中的Visual Studio和导入的MSBuild属性

时间:2015-03-10 22:05:07

标签: visual-studio msbuild

我试图将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文件中查找,而不能在它导入的任何内容中查找。

2 个答案:

答案 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 ++设置,您将能够更改它们。