.NET Framework(4.8)的Cake Runner无法获取环境变量。

3

我正在使用Cake runner for .NET Framework来构建一个.NET Framework 4.8控制台应用程序。我使用以下命令获取了build.ps1

Invoke-WebRequest https://cakebuild.net/download/bootstrapper/windows -OutFile build.ps1

这个文件里没有我的任何更改。而我的 build.cake 文件看起来是这样的:

var configuration = "Release";
var buildPath = $"CakeEnvDemo/bin/{configuration}";
var buildDir = Directory(buildPath);

var solution = "CakeEnvDemo.sln";

Task("Clean")
    .Does(() => 
    {
        Information("Running Clean ...");
        CleanDirectory(buildDir);
    });

Task("NuGetRestore")
    .IsDependentOn("Clean")
    .Does(() => 
    {
        Information("Running NuGetRestore ...");
        NuGetRestore(solution);
    });


Task("Build")
    .IsDependentOn("NuGetRestore")
    .Does(() => 
    {
        MSBuild(solution, settings => settings.SetConfiguration(configuration));
    });

Task("AfterBuild")
    .IsDependentOn("Build")
    .Does(() => 
    {
        Information("Running After Build ...");

        var cakeEnv = EnvironmentVariable("cake_env", "default value");
        
        Information($"Got value of cake_env from environment: {cakeEnv}");

    });


RunTarget("AfterBuild");

请参考"AfterBuild"任务。基本上,我想在构建完成后读取一个环境变量并进行某些操作。然而,无论我做什么,cake似乎都无法获取它,而是始终使用我提供的默认值。

根据这里的文档,我认为像这样做:

$cake_env="actual env var value"
.\build.ps1

这应该是有效的,但实际上从来没有生效过。我总是得到默认值:

========================================
AfterBuild
========================================
Running After Build ...
Got value of cake_env from environment: default value

我不想使用参数,请不要推荐 ScriptArgs。我想要环境变量。


谁在哪里设置 cake_env 环境变量的值? - C. Augusto Proiete
Gitlab,但这并不重要。此外,Gary Ewan Park的答案适合我的需求。 - igg
当然很重要 :) 结果发现你根本没有设置环境变量! - C. Augusto Proiete
1个回答

5

这个:

$cake_env="actual env var value"

设置本地 PowerShell 变量,而不是环境变量。

您应该能够使用以下命令:

$env:cake_env="actual env var value"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接