Visual Studio每次运行时都会构建项目

Chr*_*ris 14 .net c# visual-studio-2010 visual-studio

我在Visual Studio 2010中有一个带有大量项目的.NET解决方案.直到最近,当我从IDE中运行启动项目时,只有在启动项目或其中一个依赖项目中对代码进行了更改时才会构建项目.

大约两周前,我注意到每次运行启动项目时,Visual Studio都会构建所有项目,大约需要7分钟.毋庸置疑,这需要花费大量时间,而且我已尽力在网上寻找解决方案,但尚未找到解决我具体问题的任何解决方案.

还有一些额外的信息 - 在我开始遇到这个问题的同时,同样的问题开始发生在我的团队中的其他人身上.

我们还使用源代码存储库.由于我们没有更改Visual Studio中的任何设置,我怀疑有人在某些项目的源代码中无意中更改了某些项目,现在每次都需要构建所有项目.

任何建议将不胜感激.

Mat*_*ith 13

原因可能很多,所以没有你的解决方案+项目,我们只能猜测.

我处理这个问题的典型方法是通过二进制搜索缩小范围.那是,

  1. 我建立了一切.
  2. 接下来,我在构建顺序的中间找到一些东西并构建该项目.如果该项目所依赖的东西是罪魁祸首,那么你将会遇到这个问题.如果它不依赖的东西有问题你就不会(也就是说它会跳过所有项目).
  3. 现在,您重复此过程,直到将其缩小到(希望)已开始导致问题项目.

这(当然)仅在有一个项目引入新问题(可能)时才有效.

在我的特定情况下,其中一个罪魁祸首是x64项目引用x86项目,该项目未选择在x64配置中构建.

  • 仅供参考 - 这些步骤使我分离了根本原因.我团队中的某个人通过在解决方案中引用项目的二进制版本而无意中创建了循环引用,因此二进制版本总是与新编译的版本略有过时.删除引用解决了这个问题,因为开始时甚至不需要引用.谢谢你的帮助! (6认同)

and*_*las 7

我将在stackoverflow上找到我在这里找到的最佳答案,并结合亚马史密斯在这里接受的答案,我已经找到了问题的根本原因:

通过将Visual Studio配置为以"诊断"方式记录构建输出,如本答案中所述:https://stackoverflow.com/a/29649259/2740778,输出的第一行解释了MSBuild确定重建的原因项目.

所以,如果你有,让我们说3个项目进入一个解决方案:

  • Library0
  • LIBRARY1
  • 应用

以这种方式引用:应用程序引用Library1,这个引用了Library0.通过为Application项目选择"Build",它第一次应该按顺序构建所有引用的项目.但是从现在开始,如果没有进行任何更改,按下"Build"不应构建任何内容,因为MSBuild会检测到未进行更改的情况.应显示类似的日志输出:

==========构建:0成功,0失败,3最新,0跳过==========

但是现在,如果进行了更改,如果在"Diagnostic"上有MSBuild日志输出级别,则输出窗口中的第一行将显示Visual Studio决定构建项目的原因,如下所示:

项目'Library0'不是最新的.在输出文件'c:\ Library0\bin\Debug\Library0.pdb'之后修改输入文件'c:\ Library0\Class1.cs'.


Han*_*nno 5

转到工具 - >选项 - >项目和解决方案 - >构建和运行.看看那里的选项.应该检查"仅在运行时构建启动项目和依赖项".

此外,您可以将构建输出(在相同的选项屏幕中)设置为详细或诊断,以查看是否可以找到每次构建项目的原因.