Во-первых, было бы неплохо сделать некоторую обработку ошибок.
Давайте проверим, что пользователь фактически установил указанную переменную окружения c, которую мы ищем:
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");
Что происходит?
Мы проверяем, установлена ли переменная окружения, если она есть, возвращаем ее.
Если нет
Давайте создадим переменную окружения со значением по умолчанию. Если бы нам пришлось создавать переменную среды самостоятельно, не позволяет сохранять ее в системе пользователя, пока программа не запущена, и снова ее удалять.