C#Environment.GetEnvironmentVariable(...)不能在OSX上运行

时间:2016-02-26 04:53:41

标签: c# macos xamarin mono

我正在OSX上运行一个具有以下内容的控制台应用程序......

public static void main(string[] args){

        string mongoEndpoint = Environment.GetEnvironmentVariable("MONGO_ENDPOINT");
        if(string.IsNullOrEmpty(mongoEndpoint))
        {
            _log.Fatal("Invalid Mongo Endpoint");

            throw new Exception("Invalid Mongo Endpoint");
        }
}

我在MONGO_ENDPOINT添加了~/.bash_profile环境变量,当我运行echo $MONGO_ENDPOINT时,它会输出正确的值。

但是,当我在OSX中从Xamarin Studio运行我的控制台应用程序时,它会返回null。

我尝试运行以下内容以查看它是否是所有环境变量,并返回正确的值。

Console.Out.WriteLine(Environment.GetEnvironmentVariable("HOME"));

它完全输出/usr/myname

为什么它无法找到这个环境变量?

1 个答案:

答案 0 :(得分:3)

如果从Finder / Spotlight启动,OS-X GUI应用程序将不会继承通过shell(bash,zsh等等)定义的私有/自定义env变种。你有两个选择:

1)从cmd行启动Xamarin Studio,以便您当前的用户'环境将被使用:

/Applications/Xamarin\ Studio.app/Contents/MacOS/XamarinStudio &

2)如果您希望从Finder / Spotlight启动的GUI应用程序可以使用用户环境变量,则需要修改/etc/launchd.conf,请参阅此SO答案:

https://stackoverflow.com/a/3756686/4984832

Runtime Configuration Guidelines