我找到了问题的源头!问题出在我的VCTargetsPath
系统环境变量上。
原来我的VCTargetsPath
被设置为:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
-- 看起来是正确的;那是对的目录。
不幸的是,它缺少了最后的反斜杠 - 它需要是:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\
如果缺少结尾的反斜杠,它就无法工作。
显然,我遇到的问题是各种情况下Visual Studio试图在这个路径上错误地焊接路径,例如尝试构建Android项目时出现的以下错误(请注意加粗):
1> C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \ Microsoft.Cpp.Clang.targets(210,5):error MSB4062:
无法从程序集C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \V140Microsoft.Build.CppTasks.Common.dll加载“ClangCompile”任务。
无法加载文件或程序集'file:///C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \V140Microsoft.Build.CppTasks.Common.dll'或其一个依赖项。系统找不到指定的文件。
我修复了变量,并且确实解决了此问题(以及第一个问题后发现的几个明显相关的问题)。
如果其他用户遇到类似的问题,我强烈建议他们检查VCTargetsPath
是否存在可能的错误,特别是缺少最后一个反斜杠。
为了帮助其他遇到同样问题的人,这里是我遇到的各种问题。所有这些问题仅涉及C ++项目,并且所有这些问题都通过我描述的修复方法解决。
1.创建新项目时出错。如果我尝试在解决方案中创建新的C ++项目(例如空C ++项目),则会收到两条错误消息:
'null' is null or not an object
Exception from HRESULT: 0x800A138F
然后将创建该项目 - 尽管在屏幕底部的状态栏中,我看到一条消息:正在创建“Project1”...项目创建失败。
2.无法将现有文件添加到项目中。如果我尝试将现有源文件添加到项目中,则会连续收到两条错误消息,分别为:
C:\tmp\foo.cpp的所需名称无效。
无法完成操作。参数不正确。
文件未添加到解决方案。
3.无法访问项目属性或属性页面。当我尝试访问项目属性时,会弹出一个名为MyProject Property Pages
(其中MyProject
是项目名称)的白色弹出窗口,以及错误:没有选择的属性页。
如果我尝试查看属性页面,则会收到相同的错误,但是标题不是项目名称,而是属性页面的名称,例如Microsoft.Cpp.Win32.user Property Pages
。
4.Visual Studio无法识别项目是否最新。Visual Studio仍然构建我的C ++项目,并正确构建它们。但是,一旦我构建了一个项目,我就有了一个新问题:更改源文件,然后执行另一个构建不起作用-输出将项目列为最新,即使不是。要正确构建,现在需要强制重新构建。