我有一个问题,与这篇文章基本相同:为什么MSBuild要在C:\中查找Microsoft.Cpp.Default.props而不是c:\Program Files (x86)\MSBuild?(错误代码MSB4019)。按照Peter Kahn在那篇文章中的建议添加注册表并没有起到帮助作用,即使之前缺失了该注册表项。我确实将所有文件放在了正确的目录下。
看,如果我选择以下内容作为MSBuildExtensionsPath:
与注册表一起
更加令人困惑的是,如果 $(MSBuildExtensionsPath) 被更改为不在 c:\Program Files (X86)\ 目录下的其他位置,例如:
c:\Program Files (X86)\MSBuild\Microsoft.Cpp\v4.0\V110
看,如果我选择以下内容作为MSBuildExtensionsPath:
MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild
与注册表一起
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersion\4.0\VCTargetsPath=$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V110
HKLM\SOFTWARE\WoW6432Node\Microsoft\MSBuild\ToolsVersion\4.0\VCTargetsPath=$(MSBuildExtensionsPath64)\Microsoft.Cpp\v4.0\V110
理论上来说,这应该是存储文件的目录。但实际上,MSBuild正在寻找其他地方:
error MSB4019: The imported project "C:\MSBuild\Microsoft.Cpp.props" could not be found.[..]
更加令人困惑的是,如果 $(MSBuildExtensionsPath) 被更改为不在 c:\Program Files (X86)\ 目录下的其他位置,例如:
MSBuildExtensionsPath32 = C:\test\MSBuild
结果生成的错误消息改变了,令人惊讶的是,路径被正确地整理了:
error MSB4019: The imported project "C:\test\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.default.props" could not be found.[..]
有趣的是,实际上这个文件确实存在(已经复制到那里..),但仍然无法找到。为什么会这样?