Cake Build: Сбор переменных среды из файла cmd - PullRequest
0 голосов
/ 01 мая 2018

Я хочу запустить проект с помощью msbuild. Файл msbuild содержит ссылки на переменные среды.

Существует cmd-файл, который установит эти переменные окружения. Мне нужно вызвать его из сценария Cake раньше.

Если я использую StartProcess для вызова этого cmd-файла перед запуском компилятора, он не будет работать, потому что Cake не собирает переменные среды.

Как правильно назвать cmd-файл?

Содержимое пакетного файла:

@SET BDS=C:\Program Files (x86)\Embarcadero\RAD Studio\12.0
@SET BDSINCLUDE=C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\include
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\12.0
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v3.5
@SET FrameworkVersion=v3.5
@SET FrameworkSDKDir=
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin;C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin64;%PATH%
@SET LANGDIR=DE

1 Ответ

0 голосов
/ 01 мая 2018

Псевдоним StartProcess имеет перегрузку, которая принимает объект ProcessSettings , который содержит свойство EnvironmentVariables , которое является просто общим словарем строки и строки. Это позволяет создавать любые переменные среды, которые необходимо передать процессу, который вы хотите запустить. Примером может быть следующее:

StartProcess("cmd", new ProcessSettings{
    Arguments = "/c set",
    EnvironmentVariables = new Dictionary<string, string>{
        { "CI", "True" },
        { "TEMP", MakeAbsolute(Directory("./Temp")).FullPath }
    }
});

Этот же метод можно использовать и для непосредственного вызова MSBuild вместо использования командного файла, поскольку объект MSBuildSettings обладает тем же свойством.

...