刷新开放的VS方案环境变量

36
使用Visual Studio 2008,我打开了一个解决方案并意识到需要安装另一个项目所需的程序。在Visual Studio打开的情况下执行此操作并尝试调试该程序,但是程序安装添加的环境变量未显示。除非退出VS并重新加载解决方案,否则无法刷新它们。有没有办法让Visual Studio“刷新”其环境变量列表而不必退出和重新加载解决方案?
另外,我确实使用进程资源管理器查看了应用程序的环境变量,并确认它不知道我所需的环境变量。

这是一个使用*.h文件的好主意 - https://dev59.com/TX3aa4cB1Zd3GeqPhsWp - pgaczi
3个回答

45

不行。在Windows上更改环境变量只会影响新进程。你必须退出Visual Studio并重新启动。


2
需要在 launch.json 中设置触发器,以便每次启动时都重新读取环境变量。我的用途是重置模拟交易账户(每次使用新密钥)。 - gseattle
这对于 Visual Studio 2017 及更高版本仍然有效吗? - lit
@lit:是的,我刚在VS2019上测试过了。 - sɐunıɔןɐqɐp
截至VS 2022,我遇到了一个情况,即使重新启动计算机也无法清除在Functions App项目的local.settings.json中设置的环境变量。只有删除obj文件夹才是唯一的解决办法。可能是由于最新版本中的启动"优化"导致的?引用比我聪明的某人的话:“过早优化是万恶之源” ;) - noontz
我现在添加了一个答案。如果你在VS内的终端窗口中使用Chocolatey的refreshenv命令,你就可以获取环境变量。 - Tore Aurstad

2

我认为没有绕过这个问题的方法。你需要重新启动VS进程,以便它可以获取环境的更改。


0

这是一个非常古老的问题,但对于VS用户来说,他们可能希望在不关闭整个VS进程的情况下完成。

如果您打开终端并使用此Chocolatey命令,您可以在不重新启动VS 2022进程的情况下获取环境变量:

refreshenv

显然,这需要您在系统上安装了Chocolatey。
请注意,如果您已将环境变量添加为系统变量,请将EnvironmentVariableTarget设置为Machine。例如:
string uri = Environment.GetEnvironmentVariable("AZURE_COGNITIVE_SERVICE_ENDPOINT", EnvironmentVariableTarget.Machine);

这在终端窗口中可以工作,但在调试asp.net core进程时却不行。 - undefined
这可能取决于您使用的IConfiguration。通常情况下,如果您没有使用IOptionsMonitor或类似的功能,您可能需要重新启动asp.net core进程,因为在启动时会读取appsettings文件的快照,后续更改可能不会捕捉到appsettings文件的更改。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接