Hoje eu desenvolvo em um computador bastante complexo, que possui vários núcleos, unidades SSD e o que não. Ainda assim, na maioria das vezes estou programando o computador sem fazer nada. Quando eu preciso compilar e executar / implantar um projeto um pouco complexo, na melhor das hipóteses, ainda leva alguns segundos. Por quê? Agora que estamos vivendo cada vez mais na "era do instante", por que não consigo pressionar F5 no Visual studio e iniciar / implantar meu aplicativo instantaneamente?
Alguns segundos podem não parecer tão ruins, mas ainda há atrito cognitivo e tempo, e, francamente, torna a programação menos divertida. Então, como a compilação pode ser instantânea?
Bem, as pessoas tendem a editar arquivos em diferentes assemblies, e se o Visual Studio / The IDE constantemente fizesse a compilação / construção de tudo o que eu modificava a qualquer momento que fosse apropriado. Heck se eles queriam ir realmente avançado, eles poderiam fazer compilação por classe. A compilação pode não funcionar, mas silenciosamente não pode fazer nada (exceto adicionar mensagens de erro à janela de erro).
Certamente, o computador de hoje pode dedicar um ou dois núcleos a essa tarefa e, se alguém o achar irritante, poderá ser desativado por opção. Sei que provavelmente existem milhares de questões técnicas e algumas cópias de sombra sofisticadas que precisariam ser resolvidas para que isso fosse contínuo e prático, mas com certeza tornaria a programação mais contínua.
Existe alguma razão prática para esse cenário não ser possível? O desgaste de escrever continuamente binários seria muito? Os assemblies não podiam ser mantidos na memória até serem implantados / executados?
fonte
Respostas:
O Eclipse faz compilação e construção automáticas. Você pode querer verificar como eles fazem isso. É de código aberto. Eu acho que ele compila sempre que você salva um arquivo.
fonte
Você já pensou em quantas teclas você digita antes de colocar um arquivo em um estado em que ele possa ser compilado? Sério, observe o que aconteceria se você tentasse compilar classe f, classe fo, classe foo, etc. Quando você gostaria que o IDE dissesse para corrigir um erro de digitação em vez de permitir que um terminasse de digitar? Eu questionaria até que ponto você pensou nisso ao criar algo do zero, pois é onde eu poderia ver isso sendo realmente doloroso.
fonte
O Visual Studio não forneceu o recurso de compilação automática. Mas sim, alguns IDEs como o Eclipse fazem compilação automática quando você salva qualquer arquivo. Espero que nas versões futuras do Visual studio a Microsoft adicione esse recurso.
fonte
Adivinha o quê ... se você estiver usando um IDE moderno que fornece avisos, ele está fazendo uma compilação em segundo plano. É assim que se sabe que esses itens não serão compilados como estão.
fonte
Você sempre pode dividir um projeto em componentes pré-compilados. Prefiro que meu computador seja compilado por comando. O atrito cognitivo de um homem é tempo de outro homem para refletir e tomar café.
fonte
Se você usa o Visual Studio e desenvolve em c # ou o VB Reshaper pode fazer isso por você. http://www.jetbrains.com/resharper/ Economizo muito tempo conhecendo todos os lugares em que minhas alterações em uma interface quebram o código sem precisar recompilar manualmente.
(Também acho que Resharper é a merda por muitas outras razões também.)
fonte
Eu não sei, eu meio que gosto de ter que compilar coisas. É como se eu estivesse usando meu código e dizendo ao computador: " Hah! Vamos ver você rejeitar ISSO! "
Então eu recebo um erro de compilação, corrija-o e, em seguida, " Hah! Agora vamos ver você rejeitar ISSO! "
Então ele compila e eu pego um café. Parece bom. :)
fonte
Nota: Isso foi retirado da minha experiência com o Netbeans (Java), portanto, isso pode não se aplicar ao Visual Studio
TMK, isso é feito em segundo plano quando você começa a editar o arquivo. A menos que o IDE conheça todos os erros de compilação e como detectá-lo, eu assumiria que ele compila a classe em segundo plano e então relata quaisquer erros.
O problema é quando você deseja criar todo o seu projeto. Às vezes, acho que nem todos os erros podem ser capturados com essa compilação "ao vivo", portanto, apenas reconstrói tudo. Também pode ser que a classe compilada ao vivo contenha informações extras que o IDE precisa, mas não deve ser distribuída em um binário.
fonte