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

vnjpjtjt  于 7个月前  发布在  其他
关注(0)|答案(2)|浏览(81)

我试图在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文件中这样做,而不是在它导入的任何东西中。

d5vmydt9

d5vmydt91#

Visual Studio 2010、2012、2013、2015、2017、2019和2022仅从项目文件本身中的项目创建可视化和可编辑选项列表。
来自included files的项目仅用作配置选项的默认值。来自included files的值将被处理和使用,即使它们在GUI中没有可视化。
要在GUI看到内容,必须在.vcxproj文件中至少添加空的对应项。
例如,要查看主配置,您需要将空的“PropertyGroup”与标签“Configuration”(针对每个项目配置)添加到.vcxproj文件中:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
  </PropertyGroup>

字符串
要查看输出文件的名称、位置和其他常规属性,请添加不带标签的空“PropertyGroup”:

<PropertyGroup />


要查看C/C++编译器、链接器和库设置,请将“ItemCompile”、“Link”和“Lib”项添加到.vcxproj文件中:

<ItemDefinitionGroup>
    <ClCompile />
    <Link />
    <Lib />
  </ItemDefinitionGroup>


如果你把这里提到的所有东西都添加到你的.vcxproj文件中,你将在GUI中看到所有的C/C++设置,你将能够改变它们。

p8ekf7hl

p8ekf7hl2#

如果你正确地使用了“propertysheets”,你可以在VS的Property Manager窗口中看到它们,很好地按层次顺序排列,包括其中包含的选项。
我猜您现在手动修改了vcxproj并添加了一个Import。(正如你在命令行中看到的那样),它不能很好地与VS配合使用。所以,不要这样做,而是恢复您的更改,并前往属性管理器并在那里添加一些属性文件。VS将在正确的位置为您创建导入语句,并且应该像往常一样显示所有属性。

相关问题