我的 dotnet 代码库相当大(所以我不想在程序集项目中进行重构),但并没有改变那么多。尽管磁盘速度很好,但构建确实很慢 - 显然只需要一段时间即可编译该东西。因此,恕我直言,编译器缓存自上次构建以来未更改的文件的编译版本是很有意义的,因为乐观地期望另一个文件中的更改不会破坏模块。然后,如果乐观的假设被证明无效,则可以进行完整的构建。嗯,我很确定在使用 Java 和 C++ 编译器时经常会发生类似的事情。
可以在 dotnet 中完成类似的事情吗?如果没有,为什么不:-) ?
除非必要,否则 Visual Studio 不会重建程序集。当以下任何一项发生变化时,它“必须”:
此外,构建速度不太依赖于纯粹的代码数量,甚至类数量,而是依赖于正在构建的项目数量。考虑到必须完全重建的代码行数恒定,构建到一个程序集中的解决方案将比构建到 10 个程序集的解决方案构建得更快,因为构建在每个程序集中重复的程序集会产生大量固有开销。组装。
以下是一些提高构建速度的基本技巧:
我假设您使用 Visual Studio 并将所有项目都放在一个解决方案中?在这种情况下,编译器通常只构建发生更改的项目以及依赖于它们的项目。
如果将所有代码编译到一个程序集中(解决方案中只有一个项目),则编译器不会缓存任何内容。每个 Dll 始终完全从其所有源构建。没有像 C/C++ 那样的目标文件。
在这种情况下,正确的方法是将代码分解为多个程序集(每个类一个程序集是经验法则/最佳实践)。
简单。将代码拆分为多个较小的项目/程序集。如果没有检测到更改,它们将不会被重新编译。在源文件级别,这是几乎不可能的,因为源文件几乎不是独立的代码单元