可我得到的.NET编译器做了一些乐观的缓存,以加快构建无重构code基成组件? [英] can I get .net compiler to do some optimistic caching to speed up the build without refactoring code base into assemblies?

查看:244
本文介绍了可我得到的.NET编译器做了一些乐观的缓存,以加快构建无重构code基成组件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的dotnet code群是pretty的大(所以我不觉得像进行重构到组件项目),但不改变所有的东西。构建是很慢,虽然磁盘速度是好的 - 显然它只是需要一段时间来编译的东西。因此,恕我直言,它会为编译器的文件,自去年建立在乐观预期,在另一个文件中没有变化打破了模块并没有改变缓存编译的版本取得了良好的感觉。然后,如果乐观假设被证明无效,全力打造可以进行。好吧,我是pretty的确保这样的事情都在使用Java和C ++编译器经常做。

my dotnet code base is pretty big (so I don't feel like undertaking refactor into assemblies project) but doesn't change all that much. The build is real slow, although disk speed is fine - apparently it just takes awhile to compile the thing. So IMHO it would have made good sense for the compiler to cache compiled versions of files that haven't changed since last build in the optimistic expectation that no change in another file broke the module. Then if the optimistic assumption proved invalid, the full build could be undertaken. Well, I am pretty sure that things like that are often done while using Java and C++ compilers.

难道这样的事情在DOTNET这里做什么?如果不是,为什么不:-)?

Could something like that be done here in dotnet? If not, why not :-) ?

推荐答案

Visual Studio中不重建程序集,除非它有。它必须时,以下任何改变的:

Visual Studio doesn't rebuild an assembly unless it has to. It "has to" when any of the following change:

  • 在大会特性,如目标CPU /框架
  • 在引用的程序集相关性(如果装配一个对象A1 B1需要在B和B1的变化,组件A和B必须重建)
  • 在源$ C ​​$ C,将编译成汇编(显然)

此外,建立速度不那么依赖于纯code计数,甚至类的数量,而且在建项目的数量。给定一个常数的code线必须完全重建的,一个解决方案,构建成一个组件将建成比的解决方案,构建成10集快,因为有大量的开销固有的构建组件,其重复上的每个组件。

Also, build speed is less dependent on pure code count, or even class count, but the number of projects being built. Given a constant number of lines of code that must be fully rebuilt, a solution that builds into one assembly will build faster than a solution that builds into 10 assemblies, because there is a lot of overhead inherent in building an assembly that is repeated on each assembly.

下面是一些基本的技巧,以提高建造速度:

Here are some basic tips to increase build speed:

  • 尝试保持在变更为高一个在装配引用层次尽可能的水平。当A依赖于B和B是依赖于C,如果A的改变,只有已经被重建,但如果B或C的变化,什么都较高,也必须重建。这并不总是可能的,但减少了组件的数量将减少这种分层结构,这样即使你必须重建一个较低的,有较少的其他组件依赖它。
  • 在松散耦合的code。通过使用接口是否有交叉组件的依赖,并隔离接口到自己组装。一个依赖于类B级将拥有在B变为重建。然而,如果A是代替依赖的界面上予其中B器具,阿不会有如果乙变化被重建;只有当我做(这是很不常见)。然而,VS构建组件;如果我是在B中的组件,内含大会必须在B,即使我没有改变重建。
  • 创建生成配置,只有建立什么是该配置绝对必要的。调试版本不应该重新安装程序。同样的道理,一个发布版本不应该重新测试组件。然而,在默认情况下,新的项目设置将包含在每个版本的配置,所以你必须定期维护这些配置。
  • 在安装前,看看你是否可以单独构建成一个配置自己的所有。安装很容易,任何解决方案重建最慢的一个版本;首先,他们仔细检查所有的组件构建,然后他们收集他们需要包括并存档了一辆出租车,随后被封装在MSI安装逻辑一切。避免建设这一点,除非你实际上是产生一个候选发布版。
  • 只能做重新生成解决方案时,你必须。重新生成解决方案执行清洁加一个构建,导致一切不得不重新创建。
  • 最小化后生成操作。同样创造的configs的切出不需要的组件,创建的configs,使您可以跳过不需要时生成后的行动,或者干脆重新安排你的解决方案,以便构建结束了在正确的地方,首先,将大大加快你。
  • 喜欢ReSharper的或SVN客户和索引助手工具发疯当你重建,重新分析了新的组件,确定变更等确保Windows索引服务不索引源$ C ​​$ C目录或任何构建输出的位置,关闭ReSharper的解决方案分析,不包括在SVN版本生成输出。

这篇关于可我得到的.NET编译器做了一些乐观的缓存,以加快构建无重构code基成组件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆