我想减少 VS.NET 项目的编译时间 - 您对此有何想法?

问题描述 投票:0回答:4

我的项目是在 Visual Studio 08 中使用 C# 开发的。它是一个独立的桌面应用程序,大约有 6 万行代码。 曾几何时,我喜欢使用这个软件 - 现在编译时间已经增长到大约 2 分钟,它变得不再那么令人愉快......

我认为我缺乏 C# 经验可能是一个因素;例如,我已经在一个命名空间下开发了所有内容 - 拥有一个结构良好的代码库是否可以使编译器在进行更改时仅重新编译代码的必要部分?或者我是否需要将各个部分分成单独的项目/DLL 来强制发生这种情况?

升级到最新的四核处理器会有多大区别?

另一个想法是,也许这是程序员要处理的典型问题 - 像这样的长编译时间只是必须管理的事情吗?

c# .net visual-studio
4个回答
11
投票

增加编译时间的事情:

  • 解决方案中的项目数量比特定项目中的文件数量差异更大。
  • 自定义构建任务可以产生巨大差异,特别是当它们生成代码或运行构建后分析(FxCop、StyleCop、代码契约)时。
  • 本机代码项目需要更长的时间来构建。

包含 60K 行 C# 代码且未启用特殊构建功能的单个项目应该可以在过去 5 年以上制造的任何机器上在几秒钟内完成编译。


4
投票

令我惊讶的是,60k 行代码的编译时间为 2 分钟。我有一个有 500,000 行代码的应用程序,只需要大约一分半钟。确保您没有每次都进行完全重建,并确保您没有在构建之间清理解决方案。正常构建应该执行增量构建,仅重新编译自上次构建以来已更改的代码(以及受该更改影响的任何内容。)

也许其他一些因素可能包括大量使用大型资源(图像?)、最低级别库(即其他所有库使用的库)的广泛变化等。一般来说,在相对现代的机器上,编译 60,000 行C# 代码平均需要不到一分钟,除非您要重建整个解决方案。


1
投票

有一个关于硬件的thread,可以提高编译时间。另外,Scott Guthrie 的这篇非常优秀的博客文章探讨了硬盘速度对性能的影响。


0
投票

将您的项目分成多个项目会有所帮助。 只有那些发生更改的项目(以及依赖于它的项目)才需要重新编译。

但是,单个命名空间不应影响编译时间。 但是,如果您确实将项目拆分为多个项目/程序集,那么单个命名空间绝对不是一个好主意。

升级到更快的 CPU 可能会有所帮助,但您可能会发现更快的 I/O(更好的磁盘、RAID 等会更有用)。

是的,避免长时间的编译时间是开发人员需要注意的事情之一。 当谈到生产力时,尽你所能(更好的工具、更大的屏幕、更快的机器等......)

© www.soinside.com 2019 - 2024. All rights reserved.