Pergunta

O que significa para construção uma solução / projecto / programa? Eu quero ter certeza que tenho minhas definições corrigir (para que eu não soar como um idiota ao conversar). No IDE do, você pode (me corrija se eu estiver errado) compilação código-fonte / programação de código de em código de máquina legível por computador. Você pode depuração um programa, que é, basicamente, percorrendo o programa e à procura de erros.

Mas o que exatamente faz construção um programa fazer? Em VS Estou ciente de que quando você construir um programa que produz um arquivo executável em uma pasta de depuração.

Qualquer definições tecnologia do núcleo duro do que significa para construção um programa?

Foi útil?

Solução

Isto não necessariamente suportar sobre o que os humanos média sobre 'construir', mas, tanto quanto MSBuild 2.0 está em causa, o código no Microsoft.Common.targets descreve-o assim:

...
<!--
============================================================
                                    Build

The main build entry point.
============================================================
-->
<PropertyGroup>
    <BuildDependsOn>
        BeforeBuild;
        CoreBuild;
        AfterBuild
    </BuildDependsOn>
</PropertyGroup>
<Target
    Name="Build"
    Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
    DependsOnTargets="$(BuildDependsOn)"
    Outputs="$(TargetPath)"/>

<!--
============================================================
                                    BeforeBuild

Redefine this target in your project in order to run tasks just before Build
============================================================
-->
<Target Name="BeforeBuild"/>

<!--
============================================================
                                    AfterBuild

Redefine this target in your project in order to run tasks just after Build 
============================================================
-->
<Target Name="AfterBuild"/>

<!--
============================================================
                                    CoreBuild

The core build step calls each of the build targets.
============================================================
-->
<PropertyGroup>
    <CoreBuildDependsOn>
          BuildOnlySettings;
          PrepareForBuild;
          PreBuildEvent;
          UnmanagedUnregistration;
          ResolveReferences;
          PrepareResources;
          ResolveKeySource;
          Compile;
          GenerateSerializationAssemblies;
          CreateSatelliteAssemblies;
          GenerateManifests;
          GetTargetPath;
          PrepareForRun;
          UnmanagedRegistration;
          IncrementalClean;
          PostBuildEvent
    </CoreBuildDependsOn>
</PropertyGroup>
<Target
    Name="CoreBuild"
    DependsOnTargets="$(CoreBuildDependsOn)">

    <OnError ExecuteTargets="_TimeStampAfterCompile;PostBuildEvent" Condition="'$(RunPostBuildEvent)'=='Always' or '$(RunPostBuildEvent)'=='OnOutputUpdated'"/>
    <OnError ExecuteTargets="_CleanRecordFileWrites"/>

</Target>
...

o que sugere que 'construir' significa aproximadamente "compilação além de todos os eventos auxiliares associados que começá-lo a partir de artefatos de código a um resultado destacável".

Outras dicas

Construção significa muitas coisas para muitas pessoas, mas em geral, significa começar com arquivos de origem produzidos por desenvolvedores e terminando com coisas como os pacotes de instalação que estão prontos para implantação .

"A construção" pode conter muitas coisas:

  • Compilação de arquivos de origem (para linguagens / ambientes que suportam uma etapa de compilação separada / explícito)
  • Vinculação de código de objeto (para linguagens / ambientes que suportam um passo de ligação separado / explícito)
  • Produção de pacotes de distribuição, também chamado de "instaladores"
  • Geração de documentação que está incorporado dentro dos arquivos de código fonte, por exemplo, Doxygen, Javadoc
  • A execução de testes automatizados como testes unitários, testes de análise estática e testes de desempenho
  • Geração de relatórios que contam a equipe de desenvolvimento quantos avisos e erros ocorreram durante a compilação
  • Implantação de pacotes de distribuição. Por exemplo, a compilação pode implantar automaticamente / publicar uma nova versão de um aplicativo web (assumindo que a compilação for bem sucedida).

"A construção" pode ser feito "à mão" ou pode ser automatizado, ou algum híbrido dos dois. Uma compilação manual é uma compilação que requer comandos de compilação como compiladores a ser executado um por um. Um pacotes de compilação automatizados juntos todas as ferramentas de compilação individuais em um grande programa de construção que podem ser (idealmente) ser executado em um único passo.

Isso significa que o processo de converter os artefatos de origem legíveis em artefatos legíveis por máquina.

Muitos projetos envolvem lotes de arquivos de origem. Em princípio, você pode compilar manualmente qualquer um desses arquivos, por si só -. Você usa um compilador para compilar o arquivo de origem em um contendo código (temporária) de arquivo máquina objeto

Na prática, é muito entediante para compilar manualmente cada um arquivo de origem de cada vez, e ainda mais entediante para controlar manualmente quais arquivos fonte precisam ser recompilados. Então, vamos construir o projeto inteiro de uma só vez, executando um programa de compilação automatizada - normalmente chamado de "make". Esse programa passa por uma lista de arquivos de origem, muitas vezes armazenados em outro arquivo "fonte" com o nome "makefile", e chama o compilador em cada um - muitas versões de "make" são suficientes inteligente apenas recompilar os arquivos que foram alterados e por isso precisam ser recompilados.

Ao compilar é sem dúvida a parte mais importante do processo de construção, muitas vezes uma "construção" é executado lotes de outros programas após o compilador. Ocasionalmente, uma compilação completa vai gastar mais tempo executando esses outros programas do que correr o compilador.

Por exemplo, muitas pessoas acham que é conveniente ter um único botão, não só compilar todo o código fonte para a versão mais recente, mas também executar uma série de testes padrão ( C2: One Button Testing). Assim, o makefile também listas de tudo o que são necessários comandos para executar esses testes, que se tornam parte do processo de construção.

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