Skip to content

Fix binaryArgs not read from makefile.launchConfigurations on Windows#774

Draft
Copilot wants to merge 3 commits intomainfrom
copilot/fix-binaryargs-settings-json
Draft

Fix binaryArgs not read from makefile.launchConfigurations on Windows#774
Copilot wants to merge 3 commits intomainfrom
copilot/fix-binaryargs-settings-json

Conversation

Copy link
Contributor

Copilot AI commented Jan 29, 2026

On Windows, adding binaryArgs to a launch configuration in settings.json causes the launch target to reset to "Unset". The root cause is case-sensitive string comparison (===) for launch configuration matching. When VS Code re-reads settings, path casing may change (e.g., c:\Users vs C:\Users), breaking the match on case-insensitive Windows filesystems.

Changes

  • New helper function areLaunchConfigurationStringsEqual in util.ts:

    • Parses launch config format: [cwd]>[binaryPath]([args])
    • Compares cwd and binaryPath case-insensitively on Windows
    • Keeps arguments case-sensitive (flags like -V vs -v differ semantically)
    • Handles null/undefined inputs gracefully
  • Updated comparisons in configuration.ts:

    • getLaunchConfiguration() - used when looking up stored configuration
    • setNewLaunchConfiguration() - used when selecting from quick pick
  • Added unit tests covering same strings, different paths, null handling, and Windows-specific case variations

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 0psvsblobprodwus2145.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install --frozen-lockfile (dns block)
  • 40vvsblobprodwus2135.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install /rg (dns block)
  • 8wdvsblobprodwus2137.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install --frozen-lockfile (dns block)
  • b15vsblobprodwus2164.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install /rg (dns block)
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install --legacy-peer-deps (dns block)
  • b53vsblobprodwus2154.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install --frozen-lockfile (dns block)
  • g3xvsblobprodwus2151.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install /rg (dns block)
  • isovsblobprodwus211.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install --frozen-lockfile (dns block)
  • lusvsblobprodwus2166.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install /rg (dns block)
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install --legacy-peer-deps (dns block)
  • pkwvsblobprodwus2126.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install /rg (dns block)
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install --legacy-peer-deps (dns block)
  • v41vsblobprodwus2175.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install --frozen-lockfile (dns block)
  • vd2vsblobprodwus2150.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install --frozen-lockfile (dns block)
  • vjmvsblobprodwus2182.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install /rg (dns block)
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install --legacy-peer-deps (dns block)
  • vm9vsblobprodwus2190.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install /rg (dns block)
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install --legacy-peer-deps (dns block)
  • wlnvsblobprodwus2188.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install /rg (dns block)
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install --frozen-lockfile (dns block)
  • y1rvsblobprodwus2136.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install --frozen-lockfile (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>[Bug] "binaryArgs" not read from "makefile.launchConfigurations" in settings.json file on Windows with MSYS2</issue_title>
<issue_description>### Brief Issue Summary

Hello,

I’ve encountered this issue with the Makefile Tools extension in Visual Studio Code related to makefile.launchConfigurations.

When I add any arguments to the binaryArgs field in settings.json, the previously selected launch target in the Makefile: Project Outline view is immediately reset to "Unset". After this occurs, the dropdown for selecting a launch target only displays one configuration without any arguments. If I select a launch target from this list, a new launch configuration is automatically created in settings.json, but it contains no parameters.

This issue does not happen when using the extension with Windows Subsystem for Linux (WSL). When working with WSL, the launch target dropdown menu in the Makefile: Project Outline view displays two options: one to run the executable with no arguments, e.g. out(), and another to run executable with provided arguments, e.g. out(arg1, arg2, ...).

Could you please look into this issue? Having to work around this limitation impacts the ability to test binaries with parameters using the extension.

Thank you in advance for your support!

Debug Log

Reading current launch configuration "c:\Users\cmott\bb\vscode\cpp\ts>out()" from the workspace state.
Reading current launch configuration "c:\Users\cmott\bb\vscode\cpp\ts>out()" from the workspace state.
Reading current launch configuration "c:\Users\cmott\bb\vscode\cpp\ts>out()" from the workspace state.
Dropping various extension output files at c:\Users\cmott\AppData\Roaming\Code\User\workspaceStorage\6e8299b22db674d5e65cda46de9239b8\ms-vscode.makefile-tools
Dropping various extension output files at c:\Users\cmott\AppData\Roaming\Code\User\workspaceStorage\6e8299b22db674d5e65cda46de9239b8\ms-vscode.makefile-tools
Dropping various extension output files at c:\Users\cmott\AppData\Roaming\Code\User\workspaceStorage\6e8299b22db674d5e65cda46de9239b8\ms-vscode.makefile-tools
Deduced command 'make.exe ' for configuration "Default"
Deduced command 'make.exe ' for configuration "Default"
Deduced command 'make.exe ' for configuration "Default"
Deduced command 'make.exe ' for configuration "Default"
Deduced command 'make.exe ' for configuration "Default"
Deduced command 'make.exe ' for configuration "Default"
Deduced command 'make.exe ' for configuration "Default"
Deduced command 'make.exe ' for configuration "Default"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
properties: makefile.extensionOutputFolder = "undefined"
makefile.launchConfigurations setting changed.
makefile.extensionOutputFolder setting changed.
Sending telemetry: eventName = settingsChanged
Launch configuration "c:\Users\cmott\bb\vsc...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

- Fixes microsoft/vscode-makefile-tools#737

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

Copilot AI and others added 2 commits January 29, 2026 20:06
…ndows

Co-authored-by: snehara99 <113148726+snehara99@users.noreply.github.com>
…itively and args case-sensitively

Co-authored-by: snehara99 <113148726+snehara99@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix 'binaryArgs' not read from settings.json on Windows Fix binaryArgs not read from makefile.launchConfigurations on Windows Jan 29, 2026
Copilot AI requested a review from snehara99 January 29, 2026 20:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants