Quando fazemos alguma mudança no diretório bin, App_Code ou no arquivo Global.asax, toda a aplicação ASP.NET será recompilada. Para sites pequenos, isso não tem muitos problemas, já que não há muitos arquivos/recursos a serem compilados. Já quando temos um site com várias páginas, esse processo pode se tornar muito lento, principalmente na primeira requisição, que é o onde a compilação irá ocorrer.
O SP1 do .NET Framework 3.5 inclui um novo atributo chamado optimizeCompilations, dentro do elemento compilation. Quando esse atributo estiver definido como False (configuração padrão), qualquer mudança provocará a recompilação total do site; já quando voce, explicitamente, definí-lo como True, somente os arquivos afetados pela mudança serão recompilados. Abaixo temos o exemplo da utilização deste novo atributo:
<compilation optimizeCompilations=”true”>
Thanks for posting this useful information. This was just what I was on looking for. I’ll come back to this blog for sure!
Tentei comentar no blog antigo, mas tá com pau. Segue aqui o comentário para o seu farewell post:
É isso aí, Israel, legal isso. Vai também deixar mais claro que você é você.
Já assinei o outro.
Bem melhor assim, um ponto único para acompanhar.
Vi que vc colocou lá o BE.Net, é bem legal.
Vc pegou o plano da OrcsWeb para MVPs? É legal? procurei no site deles os planos, mas não achei…
[]s
Olá,
Uma questão que tenho. Se definir esse atributo para verdadeiro, sempre que eu compilo o meu projecto, ele apenas vai compilar as páginas que foram alteradas durante essa sessão ou ele consegue ver de sessões anteriores (dias anteriores em que trabalhei no visual studio) quais os arquivos modificados?
Abraço
Ola Guilherme,
A idéia deste atributo é mudar o comportamento durante a execução da aplicação. Antes dele, qualquer mudança na pastas bin, App_Code ou no arquivo Global.asax, forçava a recompilação total do projeto, incluindo as páginas previamente compiladas.
Boas Robson,
Independemente do valor deste flag, ele não afetará o comportamento do shutdown do AppDomain, ou seja, ele continuará reciclando quando alguma alteração é realizada, apenas melhorando o desempenho da requisição inicial, já que não haverá a necessidade da recompilação total do projeto.
As vezes são esses comportamentos que nos obrigam a criar algo customizado, como eu comentei aqui: http://www.israelaece.com/post/DBAuthorization-Parte-1-O-problema.aspx