我找到了问题的根源!问题出在我的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):错误 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。无法将现有文件添加到项目中。如果我尝试将现有源文件添加到项目中,我会收到两条连续的错误消息:
The desired name for C:\tmp\foo.cpp is invalid.
-
The operation could not be completed. The parameter is incorrect.
该文件未添加到解决方案中。
3.无法访问项目属性或属性页。当我尝试访问项目的属性时,我得到一个带有标题MyProject Property Pages(其中MyProject 是项目名称)的白色弹出窗口和错误:There are no property pages for the selection.
如果我尝试查看属性页,我会得到相同的错误,除了项目名称之外,标题包含属性页的名称,例如Microsoft.Cpp.Win32.user Property Pages.
4. Visual Studio 无法识别项目何时不是最新的。 Visual Studio 仍然构建我的 C++ 项目,并正确构建它们。但是,一旦我构建了一个项目,我就会遇到一个新问题:对源文件进行更改然后执行另一个构建没有任何作用 - 输出将项目列为最新的,即使它不是。为了正确构建,我现在需要强制重新构建。