Visual studio 如何在VisualStudio中防止无休止的生成错误?

Visual studio 如何在VisualStudio中防止无休止的生成错误?,visual-studio,visual-studio-2012,msbuild,visual-studio-2013,Visual Studio,Visual Studio 2012,Msbuild,Visual Studio 2013,我们正在建设我们的第一个大型网络项目:我们现在有60个项目和6个解决方案。问题是,许多解决方案使用相同的项目,并且不断发生的情况是,即使在清理和重建之后,许多解决方案使用的项目的更改也不会被拾取。通过删除和重新添加引用,尝试一个接一个地构建所有解决方案,而不是重新开始,最终我们可以重新编译代码,但情况已经恶化到这样一个地步:三个开发人员每天至少损失45分钟来构建解决方案。 我在这里抓住救命稻草,但下面是一些可能与问题有关的要点。欢迎有任何见解 如果我们对代码做了微小的更改,我们不会定期将新版本应

我们正在建设我们的第一个大型网络项目:我们现在有60个项目和6个解决方案。问题是,许多解决方案使用相同的项目,并且不断发生的情况是,即使在清理和重建之后,许多解决方案使用的项目的更改也不会被拾取。通过删除和重新添加引用,尝试一个接一个地构建所有解决方案,而不是重新开始,最终我们可以重新编译代码,但情况已经恶化到这样一个地步:三个开发人员每天至少损失45分钟来构建解决方案。 我在这里抓住救命稻草,但下面是一些可能与问题有关的要点。欢迎有任何见解

如果我们对代码做了微小的更改,我们不会定期将新版本应用到项目中。 由于缺少对Crystal Reports引擎VS 2013的支持,一些项目在Visual Studio 2012中维护,其他项目在Visual Studio 2013中维护。 程序集由CodeContracts和PostSharp进行后处理。 我们使用乌龟汞作为源控制。我们使用从SO复制的hg.ignore文件。完整的忽略列表是: 语法:glob

*B.obj *.exe *.pdb *.用户 *.aps *.pch *.vspscc *_i、 c *_p、 c *.国家编目局 *索先生 *.tlb *.tlh *贝克先生 *.缓存 *诸如此类 *.日志 *lib先生 *.丁苯橡胶 *.scc *.中密度纤维板 *ldf先生 .自卫队 [Bb]在 [Dd]ebug/ obj/ [Rr]elease*/ _再竖琴*/ [Tt]est[Rr]esult* [Bb]uild[Ll]og* *[Pp]publish.xml *.ldb
*.orig

我们确实尝试了一个解决方案来创建一个怪物解决方案,我们花了一个星期的时间来解决所有问题。问题已经解决了,但从那以后就消失了。有时,在更改依赖项链的最低级别上的依赖项时,需要清理、尝试重建和重新启动Visual Studio,才能重新生成所有内容。

没有明显的生成错误原因,我们也看不到它,因此没有什么好的猜测。通过将项目分散到多个解决方案中,您只会面临使用过时引用程序集的风险。因为它是由另一个解决方案创建的,所以无法重建。但是,这永远不会导致生成错误。只有当您犯了在多个项目中包含源代码文件的罪行时,它才会出现。那总是错的。“但这是可以修复的。”HansPassant我们犯下的罪行就是:在解决方案中仔细地包含所有依赖项目的所有源代码。这应该可以防止使用过时的dll,不是吗?好吧,心理调试得1分。我称之为犯罪是有原因的,你已经知道监狱是什么样子了。您不应该只是遇到重新编译的源代码不再匹配过时的程序集引用的问题,还应该解决严重的类型标识问题。InvalidCastException听起来熟悉吗?这样做没有任何意义,不妨使用一个包含所有60个项目的解决方案。@HansPassant我将尝试创建一个monster解决方案,并承担其所需的构建时间:-最大的问题不是InvalidCastException,而是VS坚持某些引用的dll及其引用不存在,您是否尝试过使用msbuild而不是逐个生成解决方案来创建单独的生成脚本?你可以从简单的开始