Change:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.82.3 OS Version: Ventura 13.6 This one was tricky to investigate and is impacting the and & scenario. In that scenario, VS Code is started from one application using the macOS command. This reproduces without requiring Unity and with no extension installed. This seems to be a macOS only issue. When opening either from the macOS Finder or through , the VS Code application will expand the PATH of its subprocess so that extensions that depend on something in the path of the terminal will find it. So in my case, if I start VS Code from the Finder, the processes will look like this: This is expected and good. Extensions can find in the PATH. The issue is that now, if I want to open another workspace in the same instance (but launched from another application), the PATH doesn't get expanded in the second workspace and I get: So in my second workspace, will not be found in the PATH. For this to happen, VS Code must be started from an application launched from the Finder (and not from the Terminal, otherwise it will inherit the PATH of the Terminal) Steps to Reproduce: Xcode, create a new SwiftUI project (I mean, it doesn't have to be a SwiftUI project, you can re-create the issue with anything that is able to output a macOS .app but for this particular repro I used SwiftUI) the Sandbox for the project: <img width="562" alt="Screenshot 2023-10-03 at 10 33 02 AM" src=""the look like this: the variables and to point to 2 different workspaces. the project, I personally use in command line. all VS Code instances. the .app from the Finder, it will be in if you built from the command line by default. the button As you can see from the code, the .app will: set the PATH with a marker open a new VS Code workspace on workspace1 wait a bit open a new VS Code workspace on workspace2 activity monitor, find the child process ID: <img width="1045" alt="Screenshot 2023-10-03 at 10 40 50 AM" src=""the terminal, look at their path: (Your pid may vary) that the second child process doesn't have its PATH expanded, and only inherited the PATH from the .app:
I think you're best equip to handle this issue? but feel free to reassign to whoever.
I can't repro this. To know more, please do the following: Quit VS Code From a Terminal, run , this should open VS Code In that window, run and set it to . Then, from a Terminal, run , this should open the second window On the second window, reveal the Output panel and the Window logs. Search for , what do you find?
the entire point of long repro is to not start VS Code from the terminal, but from an app launched from macOS. As I said in the bug:
Using is the same as launching from Finder. Let me know the result.
I'm afraid it's not exactly the same as it exhibits a different behavior as it appears the second instance of the process will simply inherit the PATH of the process that started it, instead of expanding the PATH to be like a terminal Using twice will work as expected from the Terminal as the second instance of the process will inherit the PATH of the Terminal. Using the repro steps to create an app that will call on Visual Studio Code twice won't work as expected. If I close all VSC instances, and do twice on two different workspaces, I get: Things are visibility different as the main Code process seems to inherits the PATH from the Terminal. Whereas if I launch Code manually from the Finder, I get: So there is a difference.
Thanks for testing! Very interesting, I was unaware of differences here. Last I saw this (when I did the macOS integration years ago), did not propagate environments. It seems like it does now. Can you try just once more with: , replacing with the path to the workspace? Thanks, I really appreciate it!
Version: 1.84.0-insider Commit: With from the Terminal I get the same behavior as :
Hi we're seeing a growing number of customer reports on this. I think I've provided all the info that was needed including a way to create a self-contained repro. How could we get this looked at? Thanks!
Same here guys. Just installed unity + vscode and have this message about missing net sdk. I came from here.
I came here from microsoft/vscode-dotnettools as well – and I'm glad I did! I've been banging my head against the " isn't on the PATH" issue (and related!) for quite a long while and with insight from the fantastic writeup for this issue was able to get it to work again. For me, the break comes down to how I open my Unity project in VS Code. I generally open my Unity Projects is with the following: the project in Unity. "Open C# Project" from the Assets menu. <img width="253" alt="image" src=""If the project isn't already open, Visual Studio Code will open up a new window and load the project. When this happens, I get all the "I can't find !" issues. a new VS Code window (keyboard shortcut/menu/palette/whatever). the project from within VS Code. In my case, I do this via the "Open Recent..." menu as what I'm looking for is usually listed there. Regardless, if I open the project in VS Code in this manner, everything works as expected.
sorry for the silence here. Let's try to figure this one out. First of all, I can't get your Swift sample to work. It launches VS Code but fails to open each workspace properly, even after triple checking that I've changed both workspace paths to something that exists. I really couldn't figure out why... In any case, can I ask you for one more piece of info? from Finder (main process regular PATH, Code Helper with sourced PATH) a Terminal, call the command with the path to the second workspace. What's the of that second Code Helper process that comes up? Resolved?
Hey thanks for bumping this, happy new year, looking forward to having a resolution for this. That happened to me before I turned the sandbox off. See step 2 of the repro? We could also try the real world scenario with Unity, but it's going to be a slightly longer setup, I'd encourage you to reach out to my email at work to help get you setup. In that case: The main Visual Studio App inherits the PATH of the Finder (so just /usr/bin:/bin) The first process gets a PATH expended. The second process inherits the PATH of the Terminal, verified by doing: Just before calling in the Terminal.
Sorry about that. It runs correctly now! And I can repro! Funny: it seems to only affect the variable. If, say, one adds to , that gets properly propagated to both extension hosts (). Interesting, digging more...
Nice! Good luck :)
Got it!
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
/verified

Discussion:
'remote'?: string; 'force'?: boolean; 'do-not-sync'?: boolean; <ins> 'preserve-env'?: boolean; </ins> 'force-user-env'?: boolean; 'force-disable-user-env'?: boolean; 'sync'?: 'on' | 'off';

'trace': { type: 'boolean' }, 'trace-category-filter': { type: 'string' }, 'trace-options': { type: 'string' }, <ins> 'preserve-env': { type: 'boolean' }, </ins> 'force-user-env': { type: 'boolean' }, 'force-disable-user-env': { type: 'boolean' }, 'open-devtools': { type: 'boolean' },

const baseConfig: IOpenConfiguration = { context, cli: args, <del> userEnv, </del> <ins> /** * When opening a new window from a second instance that sent args and env * over to this instance, we want to preserve the environment only if that second * instance was spawned from the CLI or used the `--preserve-env` flag (example: * when using `open -n "VSCode.app" --args --preserve-env WORKSPACE_FOLDER`). * * This is done to ensure that the second window gets treated exactly the same * as the first window, for example, it gets the same resolved user shell environment. * * https://github.com/microsoft/vscode/issues/194736 */ userEnv: (args['preserve-env'] || context === OpenContext.CLI) ? userEnv : undefined, </ins> waitMarkerFileURI, remoteAuthority, forceProfile: args.profile,