Visual studio 2010 Visual Studio属性页:为什么缺少字符集?

Visual studio 2010 Visual Studio属性页:为什么缺少字符集?,visual-studio-2010,visual-studio,visual-c++,propertysheet,Visual Studio 2010,Visual Studio,Visual C++,Propertysheet,我正在使用VisualStudio2010SP1。我注意到,我可以向项目中添加属性页,但不能更改这些属性页中的字符集。我创建的任何属性页都缺少“字符集”选项 有人能解释为什么我不能使用属性表设置字符集吗?是否存在无法使用属性表设置的禁止属性列表 谢谢好的,我在硬盘上搜索了一下,找到了答案 项目默认值(字符集是其中的一部分)定义要继承的默认MSBuild属性表。因此,在项目中选择“角色集”时,不会更改项目文件中的预处理器定义,而是项目文件将继承一个更改这些定义的角色集属性表。如果不选择字符集,则不

我正在使用VisualStudio2010SP1。我注意到,我可以向项目中添加属性页,但不能更改这些属性页中的字符集。我创建的任何属性页都缺少“字符集”选项

有人能解释为什么我不能使用属性表设置字符集吗?是否存在无法使用属性表设置的禁止属性列表


谢谢

好的,我在硬盘上搜索了一下,找到了答案

项目默认值(字符集是其中的一部分)定义要继承的默认MSBuild属性表。因此,在项目中选择“角色集”时,不会更改项目文件中的预处理器定义,而是项目文件将继承一个更改这些定义的角色集属性表。如果不选择字符集,则不会继承任何属性表

Unicode和MBCS属性页位于此处:

C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.MultiByteCharSupport.props
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.unicodesupport.props

MBCS属性页仅向编译器的预处理器定义(C/C++预处理器定义)添加_MBCS。Unicode属性页仅将Unicode和_Unicode添加到编译器的预处理器定义(C/C++预处理器定义)和资源编译器的定义(资源预处理器定义)。就是这样。

你说的“可以添加属性表”是什么意思?你是怎么创建这个项目的?@Ajay我是说任何项目。它不是特定于项目或解决方案的。虽然我可以在项目中更改角色集,但无法在项目的属性页中更改它。例如,我想在角色集之间切换几个项目。我不必为每个项目都这样做,而是试图通过属性表来完成。我相信通过预处理器定义部分可以做到这一点,但我想知道为什么缺少字符集。你的问题仍然很模糊!我的提示:选择多个项目,选择多个配置,然后设置选项。你在找_UNICODE/UNICODE吗?@Ajay谢谢,我知道。问题是我有一些项目必须在一个解决方案中以一种方式编译,在另一个解决方案中以另一种方式编译。我想如果我有一张财产清单,我可以省去麻烦。我知道解决方法,但我的问题是为什么属性表中缺少字符集选项?它位于项目属性中,但没有从图纸继承的选项。我也不能在属性表中设置整个程序优化选项。我认为这是一个非常明确的问题。我只是好奇。还不清楚,否则现在就有人回答了,如果不是我的话。如果可以,请发布屏幕截图。感谢您发布解决方案。我有完全相同的问题。谢谢,这对VS2010有效。不幸的是,我们已转移到2013年,现在出现错误,“错误MSB8031:不推荐为非Unicode字符集构建MFC项目。您必须将项目属性更改为Unicode或下载其他库。”即使我们通过将Microsoft.Cpp.unicodesupport.propsFurther包括到我的最后一个库来构建Unicode,发生这种情况是因为C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets的第363行通过查看字符集而不是查看是否定义了UNICODE来检查您是否在使用MBCS。我通过将Unicode添加到基本属性表的PropertyGroup中解决了这个问题。@RobProuse“基本属性表”在哪里找到?我也犯了同样的错误。我做了完整的解决方案搜索,包括PropertyGroup的外部项,但什么也找不到。我可以将UNICODE添加到预处理器定义中吗?@RobertOschler,您可能没有使用属性表。它们只是*.PROP文件,您可以在C++项目中使用这些公共设置。在您的情况下,打开C++项目的.vsxProJ文件,并将Unicode添加到第一个属性组。如果不使用属性表,也可以尝试打开项目属性,转到“常规”并将字符集设置为“使用Unicode字符集”。其中一个应该有效。