Bagikan melalui


Menggunakan variabel lingkungan dalam build

Saat Anda membuat proyek, sering kali perlu mengatur opsi build menggunakan informasi yang tidak ada dalam file proyek atau file yang terdiri dari proyek Anda. Informasi ini biasanya disimpan dalam variabel lingkungan.

Nota

MSBuild memperlakukan variabel lingkungan sebagai input tepercaya. Mereka dapat menyebabkan MSBuild memuat logika build seperti tugas, .targets, atau .props file dari lokasi kustom atau mengubah cara build dijalankan.

Variabel lingkungan referensi

Semua variabel lingkungan yang merupakan nama properti MSBuild yang valid tersedia untuk file proyek MSBuild sebagai properti. Nama properti yang valid dijelaskan dalam properti MSBuild. Misalnya, variabel lingkungan yang dimulai dengan angka tidak tersedia di MSBuild.

Nota

Jika file proyek berisi definisi eksplisit properti yang memiliki nama yang sama dengan variabel lingkungan, properti dalam file proyek akan mengambil alih nilai variabel lingkungan.

Untuk menggunakan variabel lingkungan dalam proyek MSBuild

  • Referensikan variabel lingkungan dengan cara yang sama seperti variabel yang dideklarasikan dalam file proyek Anda. Misalnya, kode berikut mereferensikan variabel lingkungan BIN_PATH:

    <FinalOutput>$(BIN_PATH)\MyAssembly.dll</FinalOutput>

    Anda dapat menggunakan Condition atribut untuk memberikan nilai default untuk properti jika variabel lingkungan tidak diatur.

Untuk memberikan nilai default untuk properti

  • Condition Gunakan atribut pada properti untuk mengatur nilai hanya jika properti tidak memiliki nilai. Misalnya, kode berikut mengatur ToolsPath properti ke c:\tools hanya jika ToolsPath variabel lingkungan tidak diatur:

    <ToolsPath Condition="'$(TOOLSPATH)' == ''">c:\tools</ToolsPath>

    Nota

    Nama properti tidak peka huruf besar/kecil sehingga dan $(ToolsPath)$(TOOLSPATH) mereferensikan properti atau variabel lingkungan yang sama.

Contoh

File proyek berikut menggunakan variabel lingkungan untuk menentukan lokasi direktori.

<Project DefaultTargets="FakeBuild">
    <PropertyGroup>
        <FinalOutput>$(BIN_PATH)\myassembly.dll</FinalOutput>
        <ToolsPath Condition=" '$(ToolsPath)' == '' ">
            C:\Tools
        </ToolsPath>
    </PropertyGroup>
    <Target Name="FakeBuild">
        <Message Text="Building $(FinalOutput) using the tools at $(ToolsPath)..."/>
    </Target>
</Project>