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

Posted

技术标签:

【中文标题】如何确定为啥 Visual Studio 在构建解决方案时可能会跳过项目【英文标题】:How to determine why visual studio might be skipping projects when building a solution如何确定为什么 Visual Studio 在构建解决方案时可能会跳过项目 【发布时间】:2010-11-22 03:07:25 【问题描述】:

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

1>----- 跳过全部重建:项目:pr1lib ------

如何确定这些构建被跳过的原因?我找不到额外的输出。

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

【问题讨论】:

除了提供的答案之外,请确保解决方案配置设置中的每个项目都处于选中状态(选中复选框)应该清理/构建:Build > Configuration Manager: check as needed 解决项目被跳过的原因。确保将/fl 添加到构建设置以获取包含原因的 msbuild.log 文件。例如:skipped, due to false condition; ( ('$(Configuration)' == 'Release') and ('$(Platform)' == 'Any CPU') ) was evaluated as ( ('Debug' == 'Release') and ('AnyCPU' == 'Any CPU') ). @T_D - 我应该在 Visual Studio 的哪个位置添加“/fl”?日志会出现在哪里?如果您将此添加为答案,我会投赞成票,因为大多数其他答案都是各种随机猜测来解决问题,而不是回答原始问题,这只是为了获取有关问题的更多信息。 @PaulG 请参阅下面的答案。只需在选项中设置设置即可。 【参考方案1】:

问题: Rebuilding, Build, Clean 跳过了我所有的项目,除了其中两个。

对我不起作用的解决方案:

    解决方案配置设置符合预期,因此没有任何更改有帮助。

    卸载和重新加载不起作用。

发生原因:

发生这种情况是因为这 2 个项目的目标 .NET 框架更高(4.7),但其他项目的目标 .NET 框架更低。最初弹出一个提示,要求我安装 .NET 4.7,我安装了,但事实证明,如果不重新启动我的机器,它就无法识别它已安装。

有效的解决方案:

    重新启动我的机器就可以了。重新启动后,它正确识别出 .NET 4.7 已安装。 或者,通过右键单击项目 -> 属性 -> 应用程序 -> 目标框架并将其设置为与其他被跳过的项目相同的方式来降级项目的目标框架,也解决了该问题。

我建议安装最新的 .NET Framework 并重新启动机器以避免遇到更多问题。

【讨论】:

【参考方案2】:

它将跳过对任何具有无法构建的依赖项目的项目的构建。

【讨论】:

【参考方案3】:

这在 VS 2019 中发生在我身上,解决方案是简单地重新启动 Visual Studio。 我的构建配置从未被修改过。

【讨论】:

【参考方案4】:

右键单击解决方案->删除然后添加现有项目,这对我有用。

【讨论】:

【参考方案5】:

删除 .\obj.\bin 目录就可以了。

【讨论】:

【参考方案6】:

将所有内容设置为不在配置管理器中构建,重新构建,将所有内容设置为在配置管理器中构建,重新构建就可以了。魔法!

【讨论】:

【参考方案7】:

确保你先做一个“干净”的工作。Visual Studio 通常不会重新构建一个没有过时的项目(就它而言),只会重新使用它已经存在的目标代码已。

运行清理应清除所有先前编译的代码,并且 VS 不应跳过该项目(假设配置管理器已选择要构建的项目......请参阅上一个答案)。

希望对您有所帮助。

【讨论】:

不,当一个项目是最新的 VS 在日志中这样说,并且不将其视为“跳过”。

以上是关于如何确定为啥 Visual Studio 在构建解决方案时可能会跳过项目的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Visual Studio 有时会使用旧代码运行?

Visual Studio 单元测试:为啥在测试相同的浮点值时测试运行不确定?

为啥 Visual Studio 2010 (msbuild?) 构建速度不快?

为啥 Visual Studio 认为我需要构建项目?

为啥在 Visual Studio 中构建失败,因为它无法从引用的程序集中解析命名空间?

当我构建我的项目时,Visual Studio 2008 没有创建 .exe 文件。任何想法为啥?