【问题标题】:How to access bamboo variables in C#如何在 C# 中访问竹变量
【发布时间】:2020-03-25 08:43:02
【问题描述】:

如何在 C# 中访问竹变量(计划和分支变量)?在 powershell 中,我可以使用 $env:bamboo_variableName 进行访问。我不确定如何在 C# 中做到这一点。这些是我的例子。

Bamboo 变量名:vCheckoutJob

 var databaseServer = Environment.GetEnvironmentVariable("bamboo_vCheckoutJob"); //returns null
 var databaseServer = Environment.GetEnvironmentVariable("bamboo_vCheckoutJob", EnvironmentVariableTarget.Machine); // returns null

【问题讨论】:

  • 我用过很多次Environment.GetEnvironmentVariable("TEMP")。似乎您必须检查是否设置了 bamboo_vCheckoutJob。您可以使用set bamboo_vCheckoutJob='test value" 手动设置(只是为了检查)。请注意,您必须在用于运行可执行文件的同一 cmd 会话中进行设置,(如 Win+R、cmd、Enter、setbake_vCheckoutJob、运行 exe)

标签: c# environment-variables bamboo confluence


【解决方案1】:

首先,进行一些错误处理可能是个好主意。

让我们检查一下用户是否确实设置了我们正在寻找的特定环境变量:

string bambooEnv;
bool delete_temp_env = false;

bambooEnv = Environment.GetEnvironmentVariable("bamboo_vCheckoutJob");
// Didn't exist, if necessary, create it temporarily.
if (bambooEnv == null) 
{
   Environment.SetEnvironmentVariable("bamboo_vCheckoutJob", "your_value");
   delete_temp_env = true;

   // Now retrieve it.
   bambooEnv = Environment.GetEnvironmentVariable("bamboo_vCheckoutJob");
}

// If we've created it, now delete it.
if (delete_temp_env) { 
   Environment.SetEnvironmentVariable("bamboo_vCheckoutJob", null);

   // Verify Deletion
   if (Environment.GetEnvironmentVariable("bamboo_vCheckoutJob") == null)
      Console.WriteLine("EnvVar var has been deleted again");
}  

封装在一个函数中:

public static string getEnvironmentVariable(string envVar, string fallbackValue)
{
    bool deleteTempEnv = false;
    string value = Environment.GetEnvironmentVariable(envVar);

    if (value == null)
    {
        Environment.SetEnvironmentVariable(envVar, fallbackValue);
        deleteTempEnv = true;

        value = Environment.GetEnvironmentVariable(envVar);
    }

    if (deleteTempEnv)
    {
        Environment.SetEnvironmentVariable(envVar, null);

        if (Environment.GetEnvironmentVariable(envVar) == null)
        {
            Console.WriteLine("EnvVar has been deleted again");
        }
    }

    return value;
}

用法:

var databaseServer = getEnvironmentVariable("bamboo_vCheckoutJob", "default_path_to_server");

发生了什么事?

我们正在检查是否设置了环境变量,如果是,则返回它。

如果没有

让我们使用默认值创建环境变量。 如果我们必须自己创建环境变量,不要在程序未运行时将其保留在用户系统中并再次删除它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多