Solução Visual Studio com projetos Sitecore - Evitando restarts do IIS com Robocopy em um evento Post-Build

Como muito bem descrito por Sean Kearney neste ótimo post, existem duas maneiras de configurar uma solução Sitecore para desenvolvimento com Visual Studio:

1) Sua solução, e o código em si, estão totalmente imersos no web site Sitecore;
2) Sua solução está fora da pasta do Sitecore e você usa algum processo de post-build para copiar os arquivos modificados.

Seu post aposta na segunda opção, que realmente tem vantagens sobre a primeira, porém uma grande desvantagem faz a vida dos desenvolvedores mais complicada (especialmente para quem não possui SSD): devido ao post build deployment, o IIS é constantemente forçado a reiniciar a cada build que fazemos.

Para lidar com este problema, investi algum tempo procurando uma forma melhor de fazer deploys. E se por acaso eu copiasse apenas os arquivos que realmente foram modificados, ao invés de copiar tudo? Talvez eu possa assim pular arquivos que causam restarts, como DLLs e arquivos de configuração…

Robocopy

Minha solução usa o robocopy para fazer cópias com opções avançadas. No projeto de seu website no Visual Studio, coloque o seguinte commando no Post-build event:

robocopy “$(ProjectDir).” “C:\inetpub\wwwroot\YourProject\Website” /E /FFT /XO
exit 0

  • Parâmetros:
    • /E – Copiar subdiretórios;
    • /XO – Não copiar arquivos antigos – aqui fica o truque, pular arquivos velhos;
    • /FFT – Usa a data da tabela FAT (com precisão de dois segundos) – isto interfere de alguma forma em como o robocopy define o que é “antigo” na hora de copiar;
    • exit 0 – Se não adicionarmos isto ao final da script, nosso servidor de Integração Contínua acusará uma quebra no build, pois o robocopy retorna um código diferente de “0” quando a cópia ocorre com sucesso.

Em minha experiência até agora, mesmo quando você re-compila a solução sem mudar nada no código, o IIS não mais reiniciará.

Publicado em Development, Visual Studio
2 comentários sobre “Solução Visual Studio com projetos Sitecore - Evitando restarts do IIS com Robocopy em um evento Post-Build
  1. Caro visitante de língua portuguesa: traduzirei meus posts na medida do possível. Caso você precise muito deste conteúdo em português, deixe um recado aqui no mural e priorizarei sua tradução.

  2. Hey Rodrigo,
    Nice post.
    This is a common issue with Sitecore development. As a result, the tool I use is CopySauce.
    You have full control to limit what copies over to your website, and it copies the files over when they’re saved….no need to even build.

    You can find out more information here:-
    http://www.seanholmesby.com/copysauce-a-file-copying-utility-for-sitecore-development/

    – Sean

Leave a Reply

Your email address will not be published. Required fields are marked *

*

  Am Not Spammer

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>