属性页 (C++)

更新:2007 年 11 月

项目属性页是 Visual Studio 用户界面元素,允许您为项目指定和应用项目设置。

访问属性页的方式有两种:选择一个项目然后单击快捷菜单上的“属性”;单击“项目”菜单上的“属性”。在“属性页”对话框中指定值时,这些值将应用于在“解决方案资源管理器”中选定的一个或多个项目。

可以为所有生成配置指定并应用项目设置,也可以为每个生成配置指定单独的项目属性。例如,可以为“发布”配置指定不应用于“调试”配置的设置。

属性页是动态的,所显示的页由项目中的文件类型决定。例如,如果项目中没有 .idl 文件,则在“属性页”对话框中将不显示 IDL 属性页。

有关更多信息,请参见如何:使用属性页指定项目属性

默认属性与已修改的属性

有些属性值显示为粗体,表示该值已更改。项目级属性的默认设置(在“解决方案资源管理器”中选定项目节点时)通常为工具的该属性默认值。例如,在 Win32 项目中,在编译器的**“代码生成”属性页上,“启用字符串池”**属性最初设置为“否”(不以粗体显示)。这表示“否”与项目的默认设置一致。如果在命令行使用 CL.exe,除非指定 /GF,否则它无效。

如果您或应用程序向导更改属性,则值以粗体显示。例如,在相同的**“代码生成”属性页中,/RTC1** 对**“Full Runtime Checks”**属性有效。在命令行,默认情况下 /RTC1 无效;这种情况下,应用程序向导更改项目的该属性默认设置。

项目默认设置的子集是公开的,可以对其进行修改。有关更多信息,请参见常规属性页(项目)中的“项目默认设置”一节。

重置属性

当查看项目的“属性页”对话框并且项目节点在“解决方案资源管理器”中被选定时,对每个属性还可以选择**“<从项目默认设置继承>”**。

将属性重置为项目的默认设置时,单击**“应用”**确保用最新的选择刷新“属性页”对话框。

当查看项目的“属性页”对话框并且文件在“解决方案资源管理器”中被选定时,以粗体显示的属性值指示文件级属性值已更改。因此,对每个属性还有选择“<从项目继承>”的选项。如果许多文件有被修改的属性,生成项目的时间将增加。

在大多数情况下,项目默认设置是系统(平台)默认设置。某些项目默认设置是从样式表导出的,这些样式表是在常规项目配置页的“项目默认设置”节中更新属性时应用的样式表,请参见“常规”属性页(项目)

输入用户定义的值

其他属性要求为属性指定值。在这些属性中,部分采用一个或多个值(多属性),其他属性则使用一个值(单属性)。

可以直接在属性页的右列中键入。用分号分隔值。对这些属性仅使用字母和数字字符。对这些值不执行错误检查。

还可以从下拉列表中选择“<编辑...>”(对于单属性)或“浏览”按钮(对于选定的多属性)。这将打开一个对话框,在该对话框中可以输入属性的一个或多个值。此对话框的标题与您要编辑的属性的名称相同。对于多属性,每行输入一个值,在每个值之后使用回车。

多属性的编辑框有一个标记为“从项目继承”(对于文件)或“从项目默认设置继承”(在项目级)的复选框。默认情况下,此复选框被选中,表示如果选中的是文件,则属性可以从项目继承值;如果在“解决方案资源管理器”中选择了项目,则可从项目默认设置继承值。

请注意,属性页对话框中多属性的显示值只反映当前级别的属性设置。例如,如果在“解决方案资源管理器”中选定一个文件,并且选择 C/C++**“预处理器定义”**属性,则属性页将不在项目级别显示任何预处理器定义。但是,如果打开多属性的编辑框,可以看到该属性的所有继承值。

如果使用 Visual C++ 项目模型,则应注意,此行为对于文件和项目上的对象也有效。即,当在文件级别查询属性值时,您将不会在项目级别得到该属性的值;您需要在项目级别显式获取该属性的值。请注意,属性的某些继承值可能来自样式表,而对于此版本,样式表是无法以编程方式访问的。

$(Inherit) 和 $(NoInherit) 宏

注意两种可以用于在其中指定用户定义值的属性:

  • $(Inherit)

  • $(NoInherit)

清除复选框(例如,“从项目默认设置继承”)与指定 $(NoInherit) 的效果相同;使用复选框更方便。如果指定 $(NoInherit),很可能非常需要仍指定自己的值。

不管“从项目继承”(或“从项目默认设置继承”)复选框的设置如何,如果在编辑框中使用这些宏,复选框设置被忽略。

如果确实要在属性上使用 $(NoInherit),注意项目默认设置中是否有影响该属性的设置。如果有,则可能会意外重写指定的项目默认设置。

请参见

任务

如何:创建和移除项目依赖项

如何:创建和编辑配置

其他资源

Windows Installer 部署任务

用于 Visual Studio 的源代码管理