Je suis un développeur NET C # /. Je viens de commencer Java Development pour Android et j'utilise Eclipse, j'ai remarqué que cela compile comme vous allez, de sorte que, à aucun moment, vous devez attendre que le programme construit. Cela semble assez incroyable, à moins que quelque chose ne se passe pas, je ne comprends pas. P>
Je me demandais pourquoi C # et le Studio Visual Studio IDE ne fournissent pas cette fonctionnalité? Y a-t-il une raison? P>
5 Réponses :
en Java Chaque classe est compilée dans un fichier de classe distinct, il est donc très facile de compiler de petites unités de code sur chaque sauvegarde. En .net, vous compilez un tas de classes dans une seule DLL, ce qui est plus lent et nécessite plus de logique dans le processus de compilation. P>
BTW, ce n'est pas une fonctionnalité de langue, c'est une fonctionnalité IDE. Tous les IDes Java ne sont pas automatiquement compilés et vous pouvez également le désactiver à Eclipse si vous le souhaitez. Et je suis sûr qu'il y a des outils de construction automatique pour Visual Studio .. P>
En outre, Java n'exige pas de liaison contre les bibliothèques d'exécution, que je pense c # fait (mais je ne suis pas d'expert C #)
Un bon outil de construction automatique, qui ne construit pas réellement, mais il peut vérifier votre projet d'erreur avant de construire, économiser du temps précieux, est restauré.
N'oubliez pas, VB a cette fonctionnalité. C # ne le fait pas, ni une demande populaire de C # Devs. L'IDE analyse comme vous allez, ce qui est suffisamment bon pour attraper la plupart des erreurs. En outre, l'IDE met en cache les constructions précédentes et ne doit que reconstruire ce qui a été modifié sur les bâtiments ultérieurs par la suite. En général, la compilation complète C # au fur et à mesure que vous allez être une traînée de performance, mais n'ajoute pas beaucoup de valeur supplémentaire.
Merci de votre aide. Jorg a contribué une réponse très approfondie, alors j'ai pensé que je ferais mieux de marquer sa réponse.
Autobuilant toute autre chose que l'application la plus triviale entraînerait des retards énormes comme compilés et liés chaque fois que vous appuyez sur une touche. P>
VS a IntelliSense et beaucoup de syntaxe à la volée et de vérification de la santé mentale qui vous donne la plupart des avantages de l'autobuild sans les retards. (Cela dit qu'il semble être ennuyeusement enthousiaste dans VS2010 ...) P>
Pas un constructeur automatique, je sais, mais en utilisant Telerik 'S JustCode est un produit qui va bien au-delà de la vérification de la syntaxe VS On-Fly en fournissant une analyse de code large Solution. Je n'imagine pas que je suis le seul développeur du monde qui utilisait une tentative de construire comme moyen de vérifier que j'avais inclus tout ce dont j'avais besoin pour que mon code construit. Avec JustCode, vous obtenez beaucoup d'aide visuelle avec ce genre de chose sans avoir à attendre que le compilateur vous dise que vous avez manqué quelque chose. P>
Cela n'a rien à voir avec Java. C'est plus une caractéristique d'éclipse. En particulier, la compilation d'arrière-plan incrémentielle est une caractéristique standard de tous les IDs de SmallTalk depuis au moins 1978 ou à peu près que cela dans les IDES LISP. P>
Eclipse était em> à l'origine une IDE SmallTalk, écrit en Smalltalk, et il est encore à ce jour entretenu par la division SmallTalk d'IBM. Ainsi, lorsque la division SmallTalk d'IBM a développé son propre compilateur Java, ils l'ont naturellement écrit pour être incrémentiels et ré-entrants, comme leurs compilateurs de SmallTalk. Et ce compilateur, appelé Jikes EM> a été ouverte avec Eclipse et est devenu le Il n'y a absolument aucune raison pour laquelle cela ne devrait pas être possible pour C # aussi. La raison pour laquelle il ne fonctionne pas em> n'est pas parce que le compilateur ne le supporte pas, en particulier, le compilateur n'est pas incrémental. Mais ce n'est pas une limitation inhérente de .NET ou C # ou studio Visual, c'est une limitation de l'imagination des Mainteners C # Compiler: Traditionnellement, tous les compilateurs de Microsoft ont été écrits en C ++ par l'équipe C ++ compiler, et ces gars n'ont tout simplement jamais entendu parler de la compilation incrémentielle. Pas parce qu'ils sont stupides, mais parce que dans la communauté C ++, personne ne se soucie de cela. P>
Mais, par exemple, la communauté VB est-elle en garde contre ce genre de choses, car elles sont habituées à VB classique. Donc, le compilateur VB.NET prend en charge le bâtiment incrémentiel, éditer et continuer, IntelliSense, Type Inference et refactoring. P>
Bien sûr, le plug-in C # supporte également beaucoup de ce genre de choses, mais ils n'utilisent pas le compilateur C # réel pour le faire. Au lieu de cela, ils devaient essentiellement recouvrir la moitié du compilateur du plugin Visual Studio à fonctionner, mais ils n'ont pas mis en œuvre le backend de génération de code réel, alors que le "compilateur" qui fait partie du plugin peut < / EM> Faites une analyse incrémentielle, une surbrillance de la syntaxe, un refactoring et édition - et continuer, il ne peut pas em> réellement, vous savez, compiler EM>. P>.
La situation pour C # va changer, cependant: la responsabilité des compilateurs a été réaffectée aux équipes de langues respectives et l'équipe C # est actuellement en train de rééménager le compilateur dans em> C # et dans em> l'équipe C #. L'un des résultats souvent parlés de cette réécriture sera la fonctionnalité de compilation-as-a-service, ce qui vous permet de compiler de petits extraits de c # et / ou d'arbres d'expression à la volée et que les puissances, par exemple. Souvent démontré C # Fix et C # C # Capacités de script. P>
Étant donné que pour que le repli fonctionne, le compilateur doit pouvoir compiler de petits extraits individuels de code quand même em>, et em> le nouveau compilateur est censé être censé être Utilisé dans le plugin Visual Studio C # pour remplacer la pile actuelle d'IntelliSense et Syntaxe mettant en évidence des hacks, il ne devrait pas être trop difficile d'obtenir une compilation incrémentielle dans le studio Visual. P>
vraiment bonne réponse. CSC.EXE a effectivement une option incrémentielle ( MSDN. Microsoft.com/en-us/Library/aa691231(vs.71).aspx ), mais il est maintenant considéré comme obsolète: msdn.microsoft.com/en-us/library/ms379563 (vs.80) .aspx . Je n'ai pas essayé d'utiliser.
Il est assez triste que la construction automatique n'est pas possible avec Visual Studios ... Je considère que la construction automatique doit être un «Caractéristique du tueur '.
Restomer Un plugin pour VS vous donne des erreurs de compilation à la volée mais pas un constructeur automatique p>