项目属性未打开 - "没有选择的属性页"

Ziv*_*Ziv 7 cmake visual-studio visual-studio-2015

Visual Studio突然不会在多个解决方案文件中显示多个项目的项目属性.

我在解决方案资源管理器中右键单击一个项目,并获得一个错误框: There are no property pages for the selection.

我认为问题不在于项目文件本身 - 我在从公共git存储库中提取的项目文件中看到了这一点,没有任何变化; 这些项目昨天正常工作,并继续为我办公室的朋友们工作.

我不知道以任何方式修改了Visual Studio设置.

知道可能导致这种情况的原因吗?

我在Windows 7(SP1)上使用Microsoft Visual Studio Professional 2015,版本14.0.24720.00 Update 1,我正在研究C++项目.

Ziv*_*Ziv 17

我找到了问题的根源!问题出在我的VCTargetsPath系统环境变量中.

事实证明我的目标VCTargetsPath是:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140 
Run Code Online (Sandbox Code Playgroud)

- 这似乎是正确的; 那是正确的目录.

不幸的是,它缺少最后的反斜杠 - 它需要是:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\
Run Code Online (Sandbox Code Playgroud)

如果没有最后的反斜杠,它就不起作用.

显然,我遇到的问题是Visual Studio尝试在此路径上错误地焊接路径的各种实例,例如,我尝试构建一个android项目时出现以下错误(注意粗体):

1> C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Clang.targets(210,5):错误MSB4062:无法从加载"ClangCompile"任务程序集C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V140Microsoft.Build.CppTasks.Common.dll.无法加载文件或程序集'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++项目,并正确构建它们.但是,一旦我构建了一个项目,我就遇到了一个新问题:对源文件进行更改然后执行另一个构建不会产生任何结果 - 输出会将项目列为最新的,即使它不是.为了正确构建,我现在需要强制重建.