Partilhar via


Como: compilação os mesmo arquivos de fonte com opções diferentes

Ao criar projetos, geralmente é necessário compilar os mesmos componentes com opções diferentes de compilação.Por exemplo, você pode criar uma compilação de depurar com informações de símbolo ou uma versão de compilação com nenhuma informação de símbolo, mas com otimizações habilitadas.Ou você pode compilação um projeto para ser executado em uma plataforma específica such sistema autônomo x86 ou x64. Em todos esses casos, a maioria das opções de compilação permanece os mesmos; apenas algumas opções são alteradas para controlar a configuração da compilação.Com MSBuild, você usar propriedades e as condições para criar as configurações de compilação diferentes.

Usando as propriedades para modificar projetos

The Property elemento define uma variável que é referenciada várias vezes em um arquivo de projeto, sistema autônomo o local de um diretório temporário ou conjunto sistema autônomo valores das propriedades que são usados em várias configurações, sistema autônomo uma compilação de depurar e uma criação para versão. Para obter mais informações sobre propriedades, consulte Propriedades do MSBuild.

Você pode usar propriedades para alterar a configuração de sua compilação sem alterar o arquivo de projeto.The Condition atributo das Property elemento e o PropertyGroup elemento permite que você altere o valor das propriedades. Para obter mais informações sobre o MSBuild condições, consulte Condições do MSBuild.

Para conjunto um agrupar de propriedades com base em outra propriedade

  • Use um Condtion o atributo em um PropertyGroup elemento semelhante à seguinte:

    <PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
        <DebugType>full</DebugType>
        <Optimize>no</Optimize>
    </PropertyGroup>
    

Para definir uma propriedade, com base na outra propriedade

  • Use um Condition o atributo em um Property elemento semelhante à seguinte:

    <DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>
    

Especificar propriedades de linha de comando

Depois que o arquivo de projeto é gravado em aceitar várias configurações, você precisa ter a capacidade de alterar essas configurações sempre que você construir seu projeto.MSBuild fornece essa capacidade, permitindo que propriedades sejam especificadas na linha de comando usando o /property ou /p Alterne.

Para conjunto uma propriedade de projeto na linha de comando

  • Use o /property comutador com a propriedade e valor da propriedade. Por exemplo:

    msbuild file.proj /property:Flavor=Debug

    - ou -

    Msbuild file.proj /p:Flavor=Debug

Para especificar mais de uma propriedade de projeto na linha de comando

  • Use o /property ou /p comutador várias vezes com a propriedade e valores de propriedade ou use um /property ou /p Alterne e separe múltiplas propriedades com ponto-e-vírgula (;). Por exemplo:

    msbuild file.proj /p:Flavor=Debug;Platform=x86

    - ou -

    msbuild file.proj /p:Flavor=Debug /p:Platform=x86

Variáveis de ambiente também são tratadas sistema autônomo propriedades e são automaticamente incorporadas por MSBuild. Para obter mais informações sobre como usar variáveis de ambiente, consulte Como: Usar variáveis de ambiente em uma compilação.

Observação:

O valor da propriedade especificada na linha de comando tem precedência sobre qualquer valor que é definida a mesma propriedade no arquivo de projeto e no arquivo de projeto terá precedência sobre o valor em uma variável de ambiente.

Exemplo

O exemplo de código a seguir, o projeto "Hello World" contém dois novos grupos de propriedade que podem ser usados para criar uma compilação de depurar e uma criação para versão.

Para compilação a versão de depurar neste projeto, tipo:

msbuild consolehwcs1.proj /p:flavor=debug

Para compilação a versão comercial neste projeto, tipo:

msbuild consolehwcs1.proj /p:flavor=retail

<Project DefaultTargets = "Compile"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Sets the default flavor of an environment variable called 
    Flavor is not set or specified on the command line -->
    <PropertyGroup>
        <Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
    </PropertyGroup>

    <!-- Define the DEBUG settings -->
    <PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
        <DebugType>full</DebugType>
        <Optimize>no</Optimize>
    </PropertyGroup>

    <!-- Define the RETAIL settings -->
    <PropertyGroup Condition="'$(Flavor)'=='RETAIL'">
        <DebugType>pdbonly</DebugType>
        <Optimize>yes</Optimize>
    </PropertyGroup>

    <!-- Set the application name as a property -->
    <PropertyGroup>
        <appname>HelloWorldCS</appname>
    </PropertyGroup>

    <!-- Specify the inputs by type and file name -->
    <ItemGroup>
        <CSFile Include = "consolehwcs1.cs"/>
    </ItemGroup>

    <Target Name = "Compile">
        <!-- Run the Visual C# compilation using input files
        of type CSFile -->
        <CSC  Sources = "@(CSFile)"
            DebugType="$(DebugType)"
            Optimize="$(Optimize)"
            OutputAssembly="$(appname).exe" >

            <!-- Set the OutputAssembly attribute of the CSC
            task to the name of the executable file that is 
            created -->
            <Output TaskParameter="OutputAssembly"
                ItemName = "EXEFile" />
        </CSC>
        <!-- Log the file name of the output file -->
        <Message Text="The output file is @(EXEFile)"/>
    </Target>
</Project>

Consulte também

Conceitos

MSBuild

Outros recursos

Conceitos do MSBuild

Referência do MSBuild