【发布时间】: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 是“用户”。
- Application 和 Core 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.props 和 Microsoft.Cpp.props 是 VS IDE 识别的特殊名称被视为“系统”吗? -
不确定.. 我宁愿认为应用程序和核心 Windows 库将是特殊名称。否则 Microsoft.Cpp.props 是一个特殊名称,因为 Application/... 嵌套在其中,它们也被视为“系统”。或者另一种可能性:因为属性表的名称以 Microsoft.Cpp 开头和/或位于 msbuild/microsoft.cpp 的子目录中,所以它们被这样对待。无限可能:P
标签: visual-studio-2010 msbuild