C#编译/构建增量过程?
我们的解决方案包含大量的C#项目.它们之间存在复杂的依赖关系,例如.项目A / B / C,A依赖于B,B依赖于C.如果我在项目C中更改一个文件,则重新构建解决方案,项目A,B,C将一起重建.
在C中,build包含两个进程,编译和链接.如果我在项目C中更改一个文件,那么我构建解决方案,A和B中的相关文件将被编译(其他文件将不会被编译,它们的.obj将在链接过程中被重用),然后进行链接. 在java中,只需要重新编译项目C中的更改后的文件,其他文件将被保存,然后打包到.jar.它重用以前的工作输出(未更改的文件的.class). 总而言之,C#不会重用任何以前的工作输出.它没有任何中间文件,就像Java的.class和C的.obj一样.所以在这一点上,我觉得C#没有做增量制作过程.一些小的变化将导致大的构建过程.我不明白为什么C#不使用以前的工作输出来加速构建过程. 我不知道我对C#编译/构建过程的理解是否正确.你能帮忙解释一下吗?非常感谢. 解决方法
C#编译器进行增量编译,我不知道你在哪里得到它的意思.也许,由于您的解决方案的复杂性,您不能正确地了解依赖项,而您假设不需要重新编译的项目实际上是必需的.
检查编译器行为的最好方法是创建一个简单的虚拟解决方案,并使用它: 建立: >创建一个空的Visual Studio C#解决方案. 现在可以用这个设置来播放一下: >编译解决方案.你会看到这两个项目都是编译的. 也就是说,我想指出,AFAIK,C#编译器只能在项目级执行增量编译.我不知道任何给定的程序集中的类级别上的任何增量编译优化.对编译器的内部工作有更多洞察力的人可能能够澄清这一行为. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |