MSBuild 默默地跳过一个项目(在我的 sln 中的许多项目中)

Posted

技术标签:

【中文标题】MSBuild 默默地跳过一个项目(在我的 sln 中的许多项目中)【英文标题】:MSBuild Silently Skipping One Project (out of many in my sln) 【发布时间】:2012-12-07 00:10:34 【问题描述】:

关于这个我快要失去理智了...通过 MSBuild 运行的解决方案构建在默默地无法构建解决方案中的许多项目之一。

构建不会失败,它根本不会尝试构建它(通过日志文件 MSBuild 和 devenv 输出确定)。这是一个VS2010的解决方案文件。我们将问题项目称为 Project X。我所知道的:

我有一个包含约 30 个项目的解决方案。 所有这些项目都设置为在 Release|Win32 下构建。我已经检查了两次和三次(和四次)。 如果我在 VS 中构建解决方案,每个项目都会正确构建,包括 Project X。 如果使用与 MSBuild 用于启动 devenv 的完全相同的命令,则 Project X 会构建。 如果我启动 MSBuild,将其传递给我的项目文件,则项目 X 不会构建,不会被标记为已跳过,只是...根本不存在(在日志和输出目录中)。

我一次又一次地倾注了项目文件。它真正做的就是像这样启动 devenv:

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Devenv.com" "MySolution.sln" /build "Release|Win32"

再次,如果我在提示中使用该 完全相同的命令,项目 X 已构建。我在 MSBuild 中启用了诊断级别日志记录,但无济于事。在这一点上我很茫然,任何帮助将不胜感激。

【问题讨论】:

我不知道,但是 Project X 是它运行时要构建的最后一个项目吗? (我认为 MSBuild 的默认运行 ~2^5 可能存在一些限制) @mcalex:不,但这是个好主意。经过一天的故障排除和发布此问题 5 分钟后,我实际上刚刚修复了它。 【参考方案1】:

这可能是在黑暗中拍摄 - 但我之前遇到过这个问题,并且发现卸载有问题的项目并将其重新加载到解决方案中可以解决问题。我从来没有确定为什么会发生这种情况,也没有其他人向我解释过,但是这样做已经在不同的解决方案上为我解决了两到三遍。

【讨论】:

这就成功了。我在发布此问题后立即尝试过,即将自己发布此答案。我不明白。我在重新添加之前和之后区分了以前的 sln 和 vcxproj 文件......它们在语义上是相同的。但是,问题解决了……是的。 哈 - 很高兴你成功了!这只是其中之一。 是的,我只是希望它有意义......现在我必须想出一个自动化的方法来确保这个项目中的所有东西都实际上在构建或者我'永远不会再信任它(这是由于现场报告的错误而发现的)。【参考方案2】:

我已经从Project 中删除了ProjectSection(ProjectDependencies) = postProject,这导致了sln 文件中的问题。这有帮助。

【讨论】:

这对我也有帮助,但问题是你将在没有这种依赖的情况下进行构建竞赛。

以上是关于MSBuild 默默地跳过一个项目(在我的 sln 中的许多项目中)的主要内容,如果未能解决你的问题,请参考以下文章

MSBuild 在 _CopyOutOfDateSourceItemsToOutputDirectory 期间复制依赖项目文件

MSBuild,构建不同配置的依赖项目

在Visual Studio 2012中使用MSBuild PublishProfile时,MSDeploy跳过规则

MSBuild不会部署并且不会打印错误

Azure 管道:msbuild 不会在 _PublishedWebsites 中复制一个 DLL

使用devenv/MSBuild在命令行编译sln或csproj