Pergunta

Eu executo uma solução de site ASP.NET com alguns outros projetos.Eu sei que os projetos do MSBuild são capazes disso, mas é a melhor maneira?Eles são fáceis de criar?nAnt, CruiseControl.NET ou qualquer outra solução é melhor?

Quando eu construo o site (usando Projetos de implantação web), posso automatizar parte da compilação para que ela não copie determinadas pastas do projeto para a pasta Release?Por exemplo, tenho pastas com índices de pesquisa local, imagens e outros conteúdos que fazem parte da pasta, mas nunca preciso ou faço upload deles ao implantar o projeto.

Também estou buscando esse tipo de solução para incrementar automaticamente os números de compilação e versão.

Foi útil?

Solução

Aqui está um exemplo de um projeto de implantação da Web que cria scripts desse tipo de tarefa no arquivo .wdproj:

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

Isso permitiria que você excluísse uma pasta.

(Eu suspeito que se você não quiser que a pasta seja copiada de forma alguma, o arquivo de solução seria o local para especificar isso, embora eu não tenha usado isso.)

Outras dicas

MaseBase, você pode usar Projetos de implantação web para construir e empacotar sites.Fazemos isso o tempo todo para projetos com aspecto de aplicação web.Depois de atribuir um WDP a um site, você pode abrir o .wdproj arquivo como arquivo XML de texto simples.No final, há uma seção comentada de destinos do MSBuild que representam a sequência de eventos acionados durante um processo de build.

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

Você pode descomentar os alvos que deseja (por exemplo,"AfterBuild") e insira as tarefas necessárias para realizar suas repetidas atividades pós-construção.

Você pode definir a propriedade Build Action/Copy to Output Directory em arquivos individuais (selecione o arquivo e pressione F4 para abrir a janela de propriedades) para controlar o que acontece com eles durante a construção, mas não para pastas.Provavelmente, isso poderia ser automatizado com uma tarefa (pré) de construção, se você não quiser fazer isso manualmente.

Alternativamente, você pode excluir essas pastas do projeto (clique com o botão direito e 'excluir do projeto');eles ainda estarão lá ("mostrar todos os arquivos" no gerenciador de soluções), mas não serão incluídos na construção do projeto.

CruiseControl.NET resolve um problema diferente (integração contínua)...no entanto, tive grande sucesso com o NAnt especificamente para o que você está perguntando.Há uma curva de aprendizado, mas quando você se tornar proficiente, você se perguntará como conseguiu se dar bem sem isso.

Além da dica de @Fredrik sobre como definir itens do projeto como "Copiar para diretório de saída", você também pode especificar uma ação pós-construção nas propriedades do projeto na guia Construir e incluir comandos CMD como copy.exe e move.exe.

Usamos o FinalBuilder para automatizar várias tarefas pós-construção/pré-construção.Há também uma interface da web para que você possa iniciar compilações (ou enviar sites) fazendo login no site e clicando em um botão.

http://www.finalbuilder.com/

Você não pode editar o arquivo MSBuild do projeto de implantação da Web para que ele faça o que deseja?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top