为什么MSBuild在无关的位置查找Microsoft.Cpp.Default.props?

4
我有一个问题,与这篇文章基本相同:为什么MSBuild要在C:\中查找Microsoft.Cpp.Default.props而不是c:\Program Files (x86)\MSBuild?(错误代码MSB4019)。按照Peter Kahn在那篇文章中的建议添加注册表并没有起到帮助作用,即使之前缺失了该注册表项。我确实将所有文件放在了正确的目录下。
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.[..]

有趣的是,实际上这个文件确实存在(已经复制到那里..),但仍然无法找到。为什么会这样?

1个回答

1

1
当你只需要 MSBuild 工具时,安装完整的 Visual Studio 不是很愚蠢吗? - Green
1
@Green,也许这很愚蠢。也许您可以发布更详细的评论。在2013年7月,拥有Visual Studio仍然是我进行编译所需的唯一已发布方法。https://github.com/nodejs/node-gyp/commit/088082766caf7562540d0cf1ef7960a7f11995c9#diff-04c6e90faac2675aa89e2176d2eec7d8 - xverges
@xverges 这并不意味着微软的设计选择不是愚蠢和糟糕的。 - starscream_disco_party

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接