Udostępnij za pośrednictwem


Jak: tworzenie tych samych plików źródłowych z różnych opcji

Tworzenie projektów, często skompilować te same składniki z budować różne opcje.Na przykład można utworzyć kompilacja do debugowania, informacje o symbolu lub wydanej kompilacji bez informacji o symbolu, ale z optymalizacje włączone.Można też jednak zbudować projekt na określonej platformy, takie jak x 86 lub x64.W tych przypadkach większość opcji kompilacji zmieniają się; tylko kilka opcji są zmieniane na konfiguracją kompilacji.Z MSBuild, użyj właściwości i warunki do tworzenia konfiguracji różnych kompilacji.

Aby zmodyfikować projektów za pomocą właściwości

Property Element definiuje zmienna, która odwołuje się w pliku projektu, takie jak lokalizacja katalogu tymczasowego, lub zestaw wartości dla właściwości, które są używane w różnych konfiguracjach, kompilacja do debugowania i uwolnienie budować.Aby uzyskać więcej informacji o właściwościach, zobacz Program MSBuild właściwości.

Właściwości można użyć do zmiany konfiguracji kompilacji bez konieczności zmiany pliku projektu.Condition Atrybut Property element i PropertyGroup element pozwala na zmianę wartości właściwości.Aby uzyskać więcej informacji o MSBuild warunki, zobacz Program MSBuild warunki.

Aby ustawić grupę właściwości na podstawie innej właściwości

  • Użycie Condition atrybutu w PropertyGroup element jest podobny do następującego:

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

Aby zdefiniować właściwość, na podstawie innej właściwości

  • Użycie Condition atrybutu w Property element jest podobny do następującego:

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

Określanie właściwości w wierszu polecenia

Po pliku projektu jest napisane do akceptowania wielu konfiguracji, należy mieć możliwość zmiany tych konfiguracji, w każdym przypadku, gdy budowania projektu.MSBuildzapewnia taką możliwość, umożliwiając właściwości, aby określić przy użyciu wiersza polecenia /property lub /p przełączyć.

Aby ustawić właściwość projektu, w wierszu polecenia

  • Użycie /property przełączanie z właściwość i wartość właściwości.Na przykład:

    msbuild file.proj /property:Flavor=Debug
    

    - lub -

    Msbuild file.proj /p:Flavor=Debug
    

Aby określić więcej niż jedną właściwość projektu, w wierszu polecenia

  • Użyj /property lub /p przełącznik wiele razy z właściwości i wartości właściwości lub skorzystać z jednej /property lub /p przełączanie i wielu właściwości należy oddzielić średnikami (;).Na przykład:

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

    - lub -

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

Zmienne środowiskowe są także traktowane jako właściwości i są automatycznie włączone przez MSBuild.Aby uzyskać więcej informacji na temat używania zmiennych środowiskowych, zobacz Jak: używać zmiennych środowiskowych w kompilacji.

Wartość właściwość, która jest określona w wierszu polecenia mają pierwszeństwo przed dowolną wartość, która jest ustawiona dla tej samej właściwości w pliku projektu i wartości w pliku projektu mają pierwszeństwo przed wartość w zmiennej środowiskowej.

To zachowanie można zmienić za pomocą TreatAsLocalProperty atrybutu w znaczniku projektu.Dla nazwy właściwości, które są wyświetlane za pomocą tego atrybutu wartość właściwość, która jest określona w wierszu polecenia nie mają pierwszeństwo przed wartością w pliku projektu.Przykład można znaleźć w dalszej części tego tematu.

Przykład

Poniższy przykład kodu projektu "Hello World" zawiera dwie nowe grupy właściwości, które może być używane do tworzenia kompilacja do debugowania i budowania Release.

Tworzenie wersji tego projektu, należy wpisać:

msbuild consolehwcs1.proj /p:flavor=debug

Tworzenie wersji detalicznej tego projektu, należy wpisać:

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>

Poniższy przykład ilustruje sposób użycia TreatAsLocalProperty atrybut.Color Właściwość ma wartość Blue w pliku projektu i Green w wierszu polecenia.Z TreatAsLocalProperty="Color" w znaczniku projektu, a właściwość wiersza polecenia (Green) nie zastąpi właściwość, która jest zdefiniowana w pliku projektu (Blue).

Tworzenie projektu, wprowadź następujące polecenie:

msbuild colortest.proj /t:go /property:Color=Green

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0" 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
-->

Zobacz też

Informacje

Element projektu (MSBuild)

Inne zasoby

Program MSBuild

Pojęcia dotyczące programu MSBuild

Program MSBuild odniesienia