Použití proměnných prostředí v sestavení

Při sestavování projektů je často nutné nastavit možnosti sestavení pomocí informací, které nejsou v souboru projektu nebo soubory, které tvoří váš projekt. Tyto informace jsou obvykle uložené v proměnných prostředí.

Referenční proměnné prostředí

Všechny proměnné prostředí, které jsou platnými názvy vlastností NÁSTROJE MSBuild, jsou k dispozici pro soubor projektu Microsoft Build Engine (MSBuild) jako vlastnosti. Platné názvy vlastností jsou popsány ve vlastnostech nástroje MSBuild. Například proměnné prostředí začínající číslem nejsou v nástroji MSBuild k dispozici.

Poznámka:

Pokud soubor projektu obsahuje explicitní definici vlastnosti, která má stejný název jako proměnná prostředí, vlastnost v souboru projektu přepíše hodnotu proměnné prostředí.

Použití proměnné prostředí v projektu MSBuild

  • Na proměnnou prostředí se odkazuje stejným způsobem jako proměnná deklarovaná v souboru projektu. Například následující kód odkazuje na proměnnou prostředí BIN_PATH:

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

    Atribut můžete použít Condition k zadání výchozí hodnoty vlastnosti, pokud proměnná prostředí nebyla nastavena.

Zadání výchozí hodnoty vlastnosti

  • Condition Pomocí atributu u vlastnosti nastavte hodnotu pouze v případě, že vlastnost nemá žádnou hodnotu. Například následující kód nastaví ToolsPath vlastnost na c:\tools pouze v případě, že ToolsPath proměnná prostředí není nastavena:

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

    Poznámka:

    V názvech vlastností se nerozlišují malá a velká písmena, takže na $(ToolsPath)$(TOOLSPATH) stejnou vlastnost nebo proměnnou prostředí odkazují.

Příklad

Následující soubor projektu používá proměnné prostředí k určení umístění adresářů.

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