为什么我的IDE不进行后台编译/构建?


13

今天,我在相当复杂的计算机上进行开发,它具有多个内核,SSD驱动器以及其他功能。尽管如此,大多数时候我在对计算机进行编程时总是无所事事。当我最多需要编译和运行/部署一个稍微复杂的项目时,它仍然需要花费几秒钟的时间。为什么?现在我们越来越生活在“即时时代”中,为什么我不能在Visual Studio中按F5并立即启动/部署应用程序?

几秒钟听起来可能还不错,但仍然是认知上的磨擦和时间的累加,坦率地说,这使编程变得不那么有趣了。那么,如何立即编译呢?

好吧,人们倾向于在不同的程序集中编辑文件,如果Visual Studio / IDE不断进行编译/构建我可能适当修改的所有内容,该怎么办。如果他们想真正进步,可以按班级编译。编译可能无法正常工作,但随后它可能会默默地不执行任何操作(将错误消息添加到错误窗口除外)。

当然,今天的计算机可以为这个任务指定一个或两个核心,并且如果有人发现它很烦人,可以选择禁用它。我知道可能存在上千个技术问题,并且需要解决一些奇特的影子复制,以使其无缝和实用,但这肯定会使编程更加无缝。

有什么实际的原因导致这种情况不可能发生?不断编写二进制文件的损耗会太大吗?程序集在部署/运行之前是否无法保存在内存中?


Visual Studio针对vb.net,至少部分针对c#。这实际上是c#/ vb.net永恒辩论的一个重点:codinghorror.com/blog/2007/06/…–
Matthieu

是的,我看了那篇文章。这主要是在解析/编译错误消息的上下文中,而对于即时部署/运行的应用程序则不是那么多
Homde 2011年

@ konrad,VB.NET还不提供后台编译吗?
Pacerier,2014年

Answers:


6

Eclipse会自动编译和构建。您可能想看看他们是如何做到的。它是开源的。我认为只要您保存文件就可以编译。


1
万岁!
MattC 2011年

太好了,有人使用吗?这有什么不同吗?
霍姆德

2
它制造了巨大的差异。它对于快速编程非常有用-它可以通过您即时编写的调用生成方法声明。从Java应用程序开发到基于Java的Web 2.0应用程序,ffmpeg开发和扩展(在C语言中)和C ++),PERL和Python。它们具有适用于几乎每种可以想象的语言的插件。
布莱恩

6

您是否曾考虑过要进行多少次击键才能使文件达到可以编译的状态?认真地看一下如果尝试编译f类,fo类,foo类等会发生什么情况。什么时候您想让IDE告诉您解决一个错字而不是让一个人打完打字?我想问一下您在从头开始创建某些东西时对这一点的想法有多好,因为这让我看到这确实很痛苦。


我不建议它是编译我实际上正在编辑的文件/类。但是我编辑过的其他程序集应该是公平的游戏,如果可以进行部分编译(这可能是一个复杂的任务),则同一程序集中的其他类也应该是公平的。解决依赖关系可能会出现一些问题,但它不应该是不可克服的。除了最坏的情况外,它还会像往常一样进行编译,只要编译线程不会过多破坏接口或计算机,就不会有太大问题
Homde 2011年

2

Visual Studio没有提供自动编译功能。但是,是的,某些IDE(例如Eclipse)在保存任何文件时会自动编译。希望在将来的Visual Studio版本中,Microsoft将添加此功能。


1

猜猜是什么...如果您正在使用向您发出警告的现代IDE,它正在执行后台编译。就是这样,它知道这些项目不会按原样编译。


7
它正在做背景解析。这与完全编译不同。
梅森惠勒'02

是的,当然,但似乎他们停了片刻。如果仍然进行了一些编译/解析,为什么不花一整夜在构建/运行过程中使用它呢?
2011年

1
@MKO:AFAIK,在很多的IDE,解析树在构建过程中使用的(而不是重新解析为编译器)如果源并没有改变,因为它是生成的。
Anon。

1

您始终可以将项目分解为预编译的组件。我更喜欢我的计算机以命令编译。一个人的认知摩擦是另一个人思考和喝咖啡的时间。


1

如果您使用Visual Studio并在c#或VB中进行开发,则Reshaper可以为您完成此任务。 http://www.jetbrains.com/resharper/ 通过了解我对接口所做的更改使代码破坏代码的所有位置而无需手动重新编译,我节省了大量时间。

(我也认为Resharper也是很糟糕的原因)。


我认为您的意思是reSharper会告诉您任何编译错误。据我所知,它实际上不会为您生成二进制文件。
塞勒姆2014年

1

我不知道,我有点喜欢编译东西。我有点挥舞着我的代码,对电脑说:“ 哈!让我们看看您拒绝了!

然后,我得到一个编译错误,将其修复,然后,“ 哈!现在让我们看看您是否对此予以拒绝!

然后编译,我喝了杯咖啡。感觉不错。:)


感觉很好.....除非您一天必须做6500次。
Pacerier,2014年

0

注意:这是根据我对Netbeans(Java)的经验得出的,因此这可能不适用于Visual Studio。

当您开始编辑文件时,TMK会在后台进行一些操作。除非IDE知道每个编译错误以及如何检测它,否则我将假定它在后台编译该类,然后报告任何错误。

问题是当您要构建整个项目时。有时候,我猜不是所有的错误都可以通过“实时”编译捕获,因此它仅重建所有内容。也可能是实时编译的类包含IDE所需的额外信息,但不应以二进制形式分发。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.