项目属性无法打开 - “未选择属性页”。

11

Visual Studio突然无法为多个项目和多个解决方案文件显示项目属性。

我在“解决方案资源管理器”中右键单击一个项目,会出现一个错误框,上面写着:选择中没有属性页。

我不认为问题可能是关于项目文件本身的 - 我从一个共同的git仓库中拉取了这些项目文件,没有任何更改; 这些项目昨天正常工作,并且在我办公室的同事那里也没有遇到任何问题。

我不知道是否对Visual Studio的设置进行了修改。

您有任何想法是什么原因导致这样?

我正在使用Microsoft Visual Studio Professional 2015,版本号为14.0.24720.00 Update 1,在Windows 7 (SP1)上工作,并且正在处理C++项目。


你将不得不转动修复/重新安装的幸运轮。但先彻底检查磁盘驱动器是明智的,这当然不健康。 - Hans Passant
@HansPassant:谢谢!您所说的“彻底检查磁盘驱动器”是什么意思?您是指项目文件中的数据问题还是潜在的硬件问题?(我不认为这两者都有可能出现?) - Ziv
2
这种意外太不具体和不寻常,无法给您具体的建议去寻找。我可以猜测,但那只会分散你注意力,让你真正应该做的事情。那就是检查您的磁盘驱动器是否还处于良好状态。如果您不知道如何做到这一点,那么请查看superuser.com。 - Hans Passant
@HansPassant 谢谢! - Ziv
7个回答

21

我找到了问题的源头!问题出在我的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 ++项目,并正确构建它们。但是,一旦我构建了一个项目,我就有了一个新问题:更改源文件,然后执行另一个构建不起作用-输出将项目列为最新,即使不是。要正确构建,现在需要强制重新构建。


请检查您的注册表,路径为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions,并验证是否存在 VCTargetsPathXX 条目。我有几个条目,所有条目都优先使用相应的环境变量而不是默认值。实际上,默认值带有尾随反斜杠。因此,删除系统环境变量 VCTargetsPath 可能会产生完全相同的效果。 - Hurix

0
如果您已经安装了VS2017
从PowerShell:
[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\", "Machine")

0
我在使用VS2019时,遇到了一些我多年来一直在处理的C++项目中出现的“NULL is null”问题。对我有效的解决方案是退出VS2019,删除文件夹/目录.VS(即与我的VS2019解决方案.SLN文件位于同一目录中的文件夹/目录),然后重新启动VS2019。

0

没有任何上述方法对我有帮助,但是完全删除VCTargetsPath变量却奏效了。在vs2019和2019预览版2上进行了测试。


你是如何移除这个的? - tzg
抱歉,这是半年前的事了,我现在想不起来了。简短的谷歌搜索给出了这个答案:https://dev59.com/lLzpa4cB1Zd3GeqPTN-b#63574968 - Oleksandr

0
相同的症状,不同的原因: 对我来说,当我尝试将平台工具集设置为VS2010/v100以用于VS2015中的一个项目时,出现了这个问题。项目属性不再可访问,并显示“没有属性页[...]”错误。 原因是VS2010安装为德语版本,而VS2015设置为英语。将VS2015更改为德语即可解决问题,将两者都更改为英语也可以解决问题。有趣的是,英文版的VS2010,但将VS2015设置为德语也可以正常工作。

0

请确保打开的是解决方案文件(关闭 Visual Studio,双击 .sln 文件在 Visual Studio 中打开它)。


-1

只需关闭设计选项卡,然后重新打开它。这对我有效。


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