如何确定Visual Studio在构建解决方案时可能会跳过项目的原因

Mat*_*att 79 msbuild visual-studio

我正在调试其他人的工作,解决方案非常庞大.当我尝试构建整个事物时,解决方案中的几个项目不会构建,只是跳过.在构建过程中查看输出窗口说:

1> ------ Skipped Rebuild All:项目:pr1lib ------

如何确定跳过这些构建的原因?我无法找到额外的输出.

这是VS2008,解决方案由c#和c ++代码组成.

Tch*_*ami 81

右键单击解决方案,选择Properties,然后选择Configuration Properties.在这里,您可以选择要构建的项目.

[ 编辑 ]:
请参阅Kdt的评论:...当我查看配置属性时...项目构建目标已配置为"混合平台",而解决方案设置为构建"任何CPU".

*当我遇到这个问题时,主项目只有'任何CPU'并且它将子dll设置为'任何CPU',但是,我删除了该配置文件并只留下'x86'.仅为dll选择x86使其开始工作
[/ edit]

  • 除非在那里选择了所有内容并且项目仍然被跳过... (23认同)
  • 我有一个神秘的"Skipped build",当我查看配置属性时,项目确实标记为构建.但是,项目构建目标是针对"混合平台"配置的,而解决方案设置为构建"任何CPU" - 更改这些以匹配修复问题. (20认同)
  • 就我而言,所有项目都设置为“ Any CPU”,并且通过删除项目_(删除项目不会导致文件被删除)_并将其重新添加到解决方案中来解决问题。 (3认同)
  • 就我而言,尽管所有项目和解决方案都设置为“ Any CPU”,但一个项目却跳过了建设。只是在我将解决方案设置为“混合平台”然后又回到“任何CPU”之后,它才会构建。查看前后的解决方案文件差异,它从`{784BDC39-5783-4128-956E-99EA062FA8FB} .Debug | AnyCPU.ActiveCfg = Debug | AnyCPU`变为`{784BDC39-5783-4128-956E-99EA062FA8FB } .Debug | AnyCPU.ActiveCfg =调试|任何CPU`。唯一的区别是该行末尾的“ Any”和“ CPU”之间增加了空间。 (2认同)

小智 39

我刚才有同样的问题 - "卸载项目"和"重装项目"解决了这个问题!


use*_*179 15

正在跳过构建,重建和清理操作.卸载和重新加载没有帮助,也没有重新启动Visual Studio.

一旦我从解决方案中删除了项目并将其添加回来,就不再跳过它.要删除它,请在解决方案资源管理器中右键单击项目>删除>确定.要将其添加回来,请在解决方案资源管理器中右键单击解决方案>添加>现有项目,然后选择您的项目

  • 请记住,您必须将所有 ProjectReferences 重新添加到该项目。 (9认同)
  • ^^^ 他的意思是您必须重新添加此项目作为对所有其他需要它的项目的引用。或者,您可以使用版本控制系统的“恢复”命令来恢复所有项目文件中的更改,并仅保留对解决方案文件的更改。删除项目并将其重新添加到解决方案中会导致解决方案文件中所有提及该项目的内容都移到末尾,这似乎是解决问题的神奇咒语。 (2认同)

Moh*_*ish 12

重新启动 Visual Studio 成功了


Pau*_*ulG 11

我有一个奇怪的,可能值得在这里记录其他可能性。

我添加了一个共享项目添加到我的解决方案中,其中包含在其他两个或三个项目中使用的代码。如您所知 - 共享项目只是代码,而不是传统意义上的真正项目。您无法“构建”共享项目,它只是嵌入到其他项目中然后在那里构建的代码。

但不知何故,我的解决方案文件已经更新,就好像共享项目是它自己需要构建的东西一样。我猜测,每当我尝试构建并且没有更改共享项目中的代码时,它就会认为“没有任何变化,跳过那些构建”

我在文件中找到了共享项目,solution.sln如下所示:

Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Api.Common", "Api.Common\Api.Common.shproj", "{EC580471-D78A-4509-AC46-BD565553AD60}"
Run Code Online (Sandbox Code Playgroud)

..这很好。不好的是这个项目也出现在 GlobalSection(ProjectConfigurationPlatforms) = postSolution这样的情况下:

    {EC580471-D78A-4509-AC46-BD565553AD60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Debug|Any CPU.Build.0 = Debug|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Release|Any CPU.ActiveCfg = Release|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Release|Any CPU.Build.0 = Release|Any CPU
Run Code Online (Sandbox Code Playgroud)

我从文件中删除了这四行.sln,现在一切看起来又愉快了


小智 9

如果配置是x64并且未安装x64编译器,它将跳过该项目.


And*_* K. 9

我的解决方案和前面提到的一样:删除->添加现有项目

但是这个解决方案意味着项目之间的引用消失了

为了避免重新添加引用:的情况下,如果你使用版本控制系统像GIT或TFS或什么的,就可以通过以下步骤acheve目标:

  1. 确保在操作之前提交/签入所有更改

  2. 浏览所有项目,从解决方案中删除它们并添加现有的它们

  3. 请注意 .sln 文件已更改

  4. 保留新的 .sln 文件,但使用版本控制系统撤消对所有 .cspoj 文件的更改


Nin*_*ark 7

我刚刚遇到了这个问题,并且能够通过删除最顶层文件夹中隐藏的 .vs 文件夹来解决它。重新启动 Visual Studio 后,一切又恢复正常了。


小智 5

Visual Studio 2008,它可能是因为没有安装64位编译器.

控制面板 - >程序和功能 - > Microsoft Visual Studio 2008专业版 - > [双击]

在Visual Studio对话框上

下一步 - >添加/删除功能 - >(下)Visual C++ - >(选择)x64编译器和工具


Dar*_*ood 5

您需要做的第一件事是诊断构建跳过项目的原因。因此,要获得详细的构建输出,请将detailed详细程度更改为Visual Studio.

在此输入图像描述

  • 不幸的是,详细程度设置没有帮助。输出仍然只显示“跳过项目”,而没有解释原因。 (16认同)