【问题标题】:Visual C++ 2010 "system property sheet" and "user property sheet", key difference?Visual C++ 2010“系统属性表”和“用户属性表”,关键区别?
【发布时间】:2016-02-03 02:18:11
【问题描述】:

我正在阅读来自 MS Press 的 Inside MSBuild 2nd-edition。到第10章介绍“用户属性表”和“系统属性表”的概念时,我想到了一个问题:是什么决定了一个属性表是“用户”还是“系统”?

如书(p284)所述,用户属性表和系统属性表在Visual Studio 2010 IDE中以不同的图标显示。

所以,

  • 从 VC 6.0 升级Microsoft.Cpp.Win32.user 是“用户”。
  • ApplicationCore Windows Libraries 是“系统”。

我首先想到的是

  • .props 来自 %LOCALAPPDATA%\Microsoft\MSBuild\v4.0 是“用户”
  • .props 来自 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0 是“系统”

但事实并非如此,因为 从 VC 6.0 升级 来自 C:\Program Files (x86),而它是一个用户属性表。

那么关键的决定因素是什么?

【问题讨论】:

  • 没有要测试的 VS2010,但是否有可能称为“系统”的那些是由项目“间接”导入的(即通过项目本身的 Import 但通过在 Microsoft.Cpp.Default.props 或 Microsoft.Cpp.props 中的某处导入),而称为“用户”的那些直接导入到项目中?在文本编辑器中打开项目并查找 Import 语句以确认这一点。另请注意,在以后的版本中,VS 中的视觉区别已被删除。
  • 哦,是的。 .vcxproj 文件中有<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />,直接导入。那么您的意思是 Microsoft.Cpp.Default.propsMicrosoft.Cpp.props 是 VS IDE 识别的特殊名称被视为“系统”吗?
  • 不确定.. 我宁愿认为应用程序和核心 Windows 库将是特殊名称。否则 Microsoft.Cpp.props 是一个特殊名称,因为 Application/... 嵌套在其中,它们也被视为“系统”。或者另一种可能性:因为属性表的名称以 Microsoft.Cpp 开头和/或位于 msbuild/microsoft.cpp 的子目录中,所以它们被这样对待。无限可能:P

标签: visual-studio-2010 msbuild


【解决方案1】:

好吧,也许作者已经按照我的猜测回答了它,但是以一种模糊和模棱两可的方式。在第 284 页,有:

系统属性表通过 以下两个进口,你可以在你的开头找到 项目文件(请注意,这些不是项目中的连续行 文件;它们由其他行分隔)。

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

读者对这句话有两种解读方式:

  1. 它强调“系统属性表”如何进入 .vcxproj。但“系统属性表”的定义在别处说明。
  2. 两个特别命名的(Microsoft.Cpp.Default.propsMicrosoft.Cpp.props)导入语句定义了所谓的“系统属性表”。 (非常含蓄)

也许作者意味着两者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 2011-06-11
    相关资源
    最近更新 更多