VisualStudio每次运行都构建项目我在VisualStudio2010中有一个.NET解决方案,有大量项目。直到最近,当我从IDE中运行启动项目时,只有在启动项目或其依赖项目之一中进行了代码更改时,项目才会构建。大约两周前,我注意到每次运行启动项目时,VisualStudio都会构建所有项目,这大约需要7分钟。不用说,这会花费很多时间,我已经尽力在网上找到解决方案,但没有找到任何解决我的具体问题的方法。还有一些额外的信息——在我开始遇到这个问题的同时,同样的问题也开始发生在我团队中的其他人身上。我们还使用源代码存储库。由于我们没有更改VisualStudio中的任何设置,我怀疑有人无意中更改了某些项目的源代码中的某些内容,现在每个项目都需要构建所有这些。任何建议将不胜感激。原因可能有很多,所以如果没有您的解决方案和项目,我们只能猜测。我解决这个问题的典型方法是通过二进制搜索缩小范围。也就是说,我建造了一切。接下来,我在构建顺序的中间找到一些东西并构建项目。如果项目所依赖的东西是罪魁祸首,你就会遇到这个问题。如果它不依赖的东西有问题,你不需要(意味着它会跳过所有项目)。现在你重复这个过程,直到你缩小到(希望)已经开始引起问题的项目。这(当然)只有在单个项目(可能)引入新问题时才有效。在我的特殊情况下,罪魁祸首之一是引用x86项目的x64项目,该项目未被选择在x64配置中构建。转到工具->选项->项目和解决方案->生成并运行。看看那里的选项。应该检查“仅在运行时构建启动项目和依赖项”。此外,您可以将构建输出(在同一选项屏幕中)设置为详细或诊断,以查看您是否可以找出每次构建项目的原因。我将分享我在stackoverflow上找到的最佳答案,结合AmazonSmith在这里接受的答案,我找到了问题的根本原因:通过配置VisualStudio以在“诊断”模式下记录构建输出,如此正如答案中所述:https://stackoverflow.com/a/29649259/2740778,输出的第一行解释了为什么MSBuild决定重建项目。所以,如果你有,假设3个项目进入一个解决方案:以这种方式引用:应用程序引用Library1,this引用Library0。通过为应用程序项目选择“构建”,它应该在第一次按顺序构建所有引用的项目。但是从现在开始,如果没有进行任何更改,按“生成”应该不会生成任何内容,因为MSBuild会检测何时没有进行任何更改。应该显示如下日志输出:==========Build:0succeeded,0failed,3up-to-date,0skipped==========但是现在,如果有变化如果MSBuild日志输出级别为“诊断”,则输出窗口的第一行将显示VisualStudio决定构建项目的原因,如下所示:项目“Library0”不是最新的。在输出文件“c:Library0binDebugLibrary0.pdb”之后修改输入文件“c:Library0Class1.cs”。根据我对这个问题的经验,只有一些项目重建,重建失败几次才最终成功。这显然是由损坏的rootprojectdir.vs%projectname%v14.suo文件引起的。这也导致需要重新构建同一个项目,并且每次打开VS时都会打开相同的窗口。删除.suo文件(当VS关闭时)并重新打开VS修复它:)工具->选项->项目和解决方案->构建和运行将输出详细程度设置为“诊断”。进行另一次构建后,检查输出窗口。在每个项目构建开始时,构建系统会告诉您哪些依赖项导致项目被构建。(在我的例子中,它是一个.ico文件意外设置为构建操作:资源和复制到输出:如果更新则复制。很难找到。)如果我每次(已经提到)在VisualStudio需要完整构建时首先检查我的设置,然后我会检查VS使用的条件以确定需要构建的内容。我知道在检查需要构建的内容时,VS会检查所有输入文件的时间戳。我见过链接生成的文件导致所有下游依赖项每次都构建的情况,即使生成的文件具有相同的内容。这是MSDN增量构建的链接。http://msdn.microsoft.com/en-us/library/ms171483.aspx我不确定VS是否有其他条件来识别需要构建的项目。以上就是C#学习教程:VisualStudio每次运行都会构建项目共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
