Pergunta

Quando eu construo meu ASP.NET aplicativo da web, recebo um arquivo .dll com o código do site (o que é ótimo), mas o site também precisa de todos os arquivos .aspx e amigos, e eles precisam ser colocados na estrutura de diretórios correta.Como posso colocar tudo isso em um diretório como resultado de cada compilação?Tentar escolher os arquivos certos no diretório de origem é uma dor.

O resultado final deve ser implantável em xcopy.

Atualizar: Não quero ter que usar manualmente o comando Publicar que conheço.Quero que o conjunto completo de arquivos exigido pelo aplicativo seja a saída da compilação - isso significa que também obtenho o conjunto completo de arquivos em um só lugar durante a execução MSBuild.

Foi útil?

Solução

Uma solução parece ser Web Deployment Projects (WDPs), um complemento para Visual Studio (e msbuild) disponível que cria um projeto web em um diretório e pode, opcionalmente, mesclar assemblies e alterar o arquivo web.config.A saída da construção de um WDP são todos os arquivos necessários para implantar o site em um diretório.

Mais informações sobre projetos de implantação da Web:

  1. Anúncio no blog webdevtools MSDN para o PDM 2008
  2. Introdução de ScottGu ao WDP 2005

A única desvantagem desta solução é a exigência de um complemento que deve estar disponível na máquina de construção.Ainda assim, é bom o suficiente por enquanto!

Outras dicas

ASP.NET não tem real implantação xcopy para novo sites.Depende de ter um diretório/aplicativo virtual no IIS.No entanto, depois que o diretório virtual for criado, você poderá usar xcopy para atualizações.

Você pode Publicar site..Se você deseja automatizar sua implantação, você precisa usar alguns roteiro.

Você já tentou usar o aspnet_compiler.exe no diretório do seu framework .net?Tenho certeza de que você pode criar uma versão "pronta para implantação" de um aplicativo ou site da web.

O destino _CopyWebApplication no MSBuild fará exatamente o que você precisa.O problema é que apenas o assembly principal será copiado para a pasta bin e é por isso que uma tarefa de cópia é necessária para copiar também qualquer outro arquivo na pasta bin.

Eu estava tentando postar o script de exemplo como parte desta postagem, mas não consegui.

Por favor, dê uma olhada nisso artigo no meu blog que descreve como criar um script MSBuild semelhante ao que você precisa.

Você já tentou clicar com o botão direito no site no Solution Explorer e clicar em 'Publicar site'?

Construir -> Publicar

Uma caixa de diálogo aparecerá que o guiará pelo processo.

Para a construção automatizada que você descreve na atualização, recomendo que você analise MSBuild e CruiseControl.NET

Depende de quão complicada a solução você precisa, você pode apenas usar um script e Jenkins, por exemplo.Você pode usar o MSBUild com Jenkins apenas para implantar em um IIS.E se você tiver outras ferramentas do Jenkins, será muito fácil conectá-lo mais tarde.Mas se você quiser apenas construir, use um script que o Jenins execute em todas as construções que usam o MSDeploy e funcionará muito bem.

É assim que eu faço, só para dar uma ideia:

Sonarqube usa Gallio, Gendarme, FXcop, Stylecop, NDepths e PartCover para obter suas métricas e tudo isso é bastante simples, já que SonarQube faz isso automaticamente, sem muita configuração.

Aqui está o Jenkins que constrói e obtém métricas do Sonar e outro trabalho para implantação automática no IIS.Eu uso um script simples de uma linha que chama meu MSBuild e qual URL, senha e usuário.

E Sonarqube, todas as métricas do meu projeto.Este é um aplicativo MVC4 simples, mas funciona muito bem!:

Se você quiser mais informações, posso fornecer um bom guia.

Toda essa configuração usa MSBuild para criar e implantar os aplicativos.

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