Dela via


Använda miljövariabler i en version

När du skapar projekt är det ofta nödvändigt att ange byggalternativ med hjälp av information som inte finns i projektfilen eller filerna som ingår i projektet. Den här informationen lagras vanligtvis i miljövariabler.

Anmärkning

MSBuild behandlar miljövariabler som betrodda indata. De kan få MSBuild att läsa in bygglogik, till exempel uppgifter, .targetseller .props filer från anpassade platser eller ändra hur bygget körs.

Referensmiljövariabler

Alla miljövariabler som är giltiga MSBuild-egenskapsnamn är tillgängliga för MSBuild-projektfilen som egenskaper. Giltiga egenskapsnamn beskrivs i MSBuild-egenskaper. Miljövariabler som börjar med ett tal är till exempel inte tillgängliga i MSBuild.

Anmärkning

Om projektfilen innehåller en explicit definition av en egenskap som har samma namn som en miljövariabel åsidosätter egenskapen i projektfilen värdet för miljövariabeln.

Så här använder du en miljövariabel i ett MSBuild-projekt

  • Referera till miljövariabeln på samma sätt som en variabel som deklareras i projektfilen. Följande kod refererar till exempel till miljövariabeln BIN_PATH:

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

    Du kan använda ett Condition attribut för att ange ett standardvärde för en egenskap om miljövariabeln inte har angetts.

Ange ett standardvärde för en egenskap

  • Använd ett Condition attribut på en egenskap för att ange värdet endast om egenskapen inte har något värde. Följande kod anger ToolsPath till exempel egenskapen till c:\tools endast om ToolsPath miljövariabeln inte har angetts:

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

    Anmärkning

    Egenskapsnamn är inte skiftlägeskänsliga, så både $(ToolsPath) och $(TOOLSPATH) refererar till samma egenskap eller miljövariabel.

Exempel

I följande projektfil används miljövariabler för att ange platsen för kataloger.

<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>