微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Visual Studio For Mac-如何从终端源填充PATH?

如何解决Visual Studio For Mac-如何从终端源填充PATH?

Visual Studio for Mac 8.7.4(内部版本38)-netcore 3.1

问题:

是否可以让 Visual Studio for Mac 利用PATH.zshrc中的.bash_profile设置?

上下文:

我很难理解为什么 Visual Studio for Mac (新安装)中的Environment.GetEnvironmentvariables()PATH条目返回以下内容

"/Library/Frameworks/Mono.framework/Commands:/Applications/Visual Studio.app/Contents/Resources:/Applications/Visual Studio.app/Contents/MacOS:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:~/.dotnet/tools:/usr/local/share/dotnet:/usr/local/share/dotnet/"

但是,当我从JetBrains Rider(新安装)在同一项目中调试相同的单元测试时,下面的代码从我的终端输出PATH内容

using System;
using NUnit.Framework;

namespace NunitTesting
{
    public class Tests
    {
        [Test]
        public void Environmenttest()
        {
            var envVariables = Environment.GetEnvironmentvariables();
            Console.WriteLine(envVariables);
        }
    }
}

解决方法

我正在利用Appium的AppiumLocalService,它使用node查找javaadbPATH安装。我发现该框架在Visual Studio for Mac上执行时失败,因为PATH未按我的期望进行填充。

在这种情况下,您应该将这些路径存储在测试配置文件中,然后在启动AppiumLocalService之前使用Environment.SetEnvironmentVariable设置启动时测试主机进程的PATH。

在NUnit中,使用OneTimeSetUp执行此操作。请阅读以下文档页面:

using NUnit;
using NUnit.Tests;
using NUnit.Framework;

[TestFixture]
public class VizionzSetUp
{
    [OneTimeSetUp]
    public void SetUp()
    {
        // Load `PATH` files from a configuration file in your project:

        Dictionary<String,String> configFileEntries = ...

        foreach( var kvp in configFileEntries )
        {
            String envVarName  = kvp.Key;
            String envVarValue = kvp.Value;

            // Special-case for PATH where it will concatenate rather than replace:
            if( envVarName == "PATH" )
            {
                envVarValue = Environment.GetEnvironmentVariable( "PATH" ) + ":" + envVarValue;
            }

            Environment.SetEnvironmentVariable( envVarName,envVarValue );
        }

        // Now start Appium:

        AppiumLocalService service = AppiumLocalService.BuildDefaultService();
        service.Start();
    }
}
,

Visual Studio for Mac将不会运行您的Bash配置文件或zsh配置文件,因此将不会使用在那里定义的任何环境变量。

您的选择是:

  1. 从Bash或zsh终端运行Mac的Visual Studio。

    打开-n“ / Applications / Visual Studio.app”

从终端运行它会导致Visual Studio for Mac继承终端中定义的环境变量。

但是,由于您无法从Dock或Finder运行Visual Studio,因此这不是理想的选择。另一种选择是使用启动代理。

  1. 创建启动代理。

~/Library/LaunchAgents/中创建一个.plist文件,例如环境。plist。

在.plist文件中使用launchctl修改PATH环境变量。

<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “https://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=“1.0”>
<dict>
<key>Label</key>
<string>my.startup</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>launchctl setenv PATH /Volumes/YourDrive/YourPath</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

https://apple.stackexchange.com/questions/51677/how-to-set-path-for-finder-launched-applications

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。