Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando você cria projetos, frequentemente compila os mesmos componentes com diferentes opções de compilação. Por exemplo, podes criar uma versão de depuração incluindo informações de símbolos ou uma versão de lançamento sem incluir informações de símbolos, mas com otimizações ativas. Ou você pode criar um projeto para ser executado em uma plataforma específica, como x86 ou x64. Em todos esses casos, a maioria das opções de compilação permanecem as mesmas. Apenas algumas opções são alteradas para controlar a configuração de compilação. Com o MSBuild, você usa propriedades e condições para criar as diferentes configurações de compilação para seus arquivos de origem.
Usar propriedades para controlar as configurações de compilação
O Property elemento define uma variável que tem várias referências em um arquivo de projeto. A variável pode identificar o local de um diretório temporário ou definir os valores para propriedades usadas em várias configurações, como compilações Debug e Release. 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 ter que alterar o arquivo de projeto. O Condition atributo dos Property elementos e PropertyGroup permite alterar o valor das propriedades.
Para definir uma propriedade que depende de outra propriedade, defina o
Conditionatributo em umPropertyelemento :<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>Para definir um grupo de propriedades que depende de outra propriedade, defina o
Conditionatributo em umPropertyGroupelemento :<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Para obter mais informações sobre as condições do MSBuild, consulte Condições.
Especificar propriedades na linha de comando
Quando seu arquivo de projeto aceita várias configurações, você precisa da capacidade de alterar as configurações sempre que criar seu projeto. O MSBuild oferece suporte a essa ação, permitindo que o utilizador especifique propriedades na linha de comando com a opção -property ou -p.
Para definir uma propriedade de projeto na linha de comando, use o parâmetro
-property(ou-p) com o nome e o valor da propriedade.msbuild file.proj -property:Flavor=DebugPara especificar mais de uma propriedade de projeto na linha de comando, use o interruptor
-property(-p) para cada nome e valor de propriedade.msbuild file.proj -p:Flavor=Debug -p:Platform=x86Há um atalho para especificar várias propriedades na linha de comando. Insira o interruptor
-property(-p) uma vez e separe a lista de nomes e valores de propriedades usando o ponto-e-vírgula (;):msbuild file.proj -p:Flavor=Debug;Platform=x86;Verbose=True
Manipular a precedência entre variáveis e propriedades de ambiente
O MSBuild processa valores de variáveis de ambiente da mesma forma que lida com propriedades. Quando a compilação encontra vários valores para uma propriedade, ela define o valor de acordo com a ordem de precedência: linha de comando (mais alta), arquivo de projeto e variável de ambiente (mais baixa).
Um valor de propriedade especificado na linha de comando tem precedência sobre qualquer valor definido para a mesma propriedade no arquivo de projeto ou variável de ambiente.
Um valor de propriedade definido no arquivo de projeto tem precedência sobre o valor correspondente definido em uma variável de ambiente.
Você pode alterar o comportamento de precedência usando o atributo TreatAsLocalProperty em uma marca de projeto. Quando você lista nomes de propriedade com esse atributo, o valor da propriedade especificado na linha de comando não tem precedência sobre o valor no arquivo de projeto. Para obter um exemplo, consulte Alterar precedência com o atributo TreatAsLocalProperty.
Para obter mais informações, consulte Usar variáveis de ambiente em uma compilação.
Usar grupos de propriedades para alterar configurações de compilação
O exemplo a seguir demonstra um arquivo de projeto que define dois grupos de propriedades para criar uma versão Debug ou Release do projeto.
Para criar a versão de depuração, use o interruptor
-property(-p) com o valor da propriedadeflavordefinido comodebug:msbuild consolehwcs1.proj -p:flavor=debugPara criar a versão Release, utilize a opção
-property(-p) com o valor da propriedadeflavordefinido comoretail.msbuild consolehwcs1.proj -p:flavor=retail
Aqui está o arquivo do projeto:
<Project DefaultTargets = "Compile">
<!-- Set default flavor, if env variable 'Flavor' not set or specified on command line -->
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
</PropertyGroup>
<!-- Define DEBUG settings -->
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
<DebugType>full</DebugType>
<Optimize>no</Optimize>
</PropertyGroup>
<!-- Define RETAIL settings -->
<PropertyGroup Condition="'$(Flavor)'=='RETAIL'">
<DebugType>pdbonly</DebugType>
<Optimize>yes</Optimize>
</PropertyGroup>
<!-- Set application name as a property -->
<PropertyGroup>
<appname>HelloWorldCS</appname>
</PropertyGroup>
<!-- Specify inputs by type and file name -->
<ItemGroup>
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run Visual C# compilation using input file of type CSFile -->
<CSC Sources = "@(CSFile)"
DebugType="$(DebugType)"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe" >
<!-- Set OutputAssembly attribute of CSC task to name of created executable file -->
<Output TaskParameter="OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log file name of output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Alterar a precedência com o atributo TreatAsLocalProperty
O exemplo a seguir ilustra como usar o TreatAsLocalProperty atributo. A propriedade Color tem um valor de Blue no arquivo de projeto e Green na linha de comando. Com a definição do atributo TreatAsLocalProperty="Color" na tag do projeto, a propriedade de linha de comando (Green) não sobrepõe o valor da propriedade definida no arquivo de projeto (Blue).
Para criar o projeto, digite o seguinte comando:
msbuild colortest.proj -t:go -property:Color=Green
Aqui está o arquivo do projeto:
<Project TreatAsLocalProperty="Color">
<PropertyGroup>
<Color>Blue</Color>
</PropertyGroup>
<Target Name="go">
<Message Text="Color: $(Color)" />
</Target>
</Project>
<!--
Output with TreatAsLocalProperty="Color" in project tag:
Color: Blue
Output without TreatAsLocalProperty="Color" in project tag:
Color: Green
-->