问题描述
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
查找java
,adb
和PATH
安装。我发现该框架在Visual Studio for Mac上执行时失败,因为PATH
未按我的期望进行填充。
在这种情况下,您应该将这些路径存储在测试配置文件中,然后在启动AppiumLocalService之前使用Environment.SetEnvironmentVariable
设置启动时测试主机进程的PATH。
在NUnit中,使用OneTimeSetUp
执行此操作。请阅读以下文档页面:
- https://docs.nunit.org/articles/nunit/writing-tests/setup-teardown/index.html
- https://docs.nunit.org/articles/nunit/writing-tests/attributes/onetimesetup.html
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配置文件,因此将不会使用在那里定义的任何环境变量。
您的选择是:
-
从Bash或zsh终端运行Mac的Visual Studio。
打开-n“ / Applications / Visual Studio.app”
从终端运行它会导致Visual Studio for Mac继承终端中定义的环境变量。
但是,由于您无法从Dock或Finder运行Visual Studio,因此这不是理想的选择。另一种选择是使用启动代理。
- 创建启动代理。
在~/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