Как настроить таргетинг на платформы с помощью launch.json

#windows #macos #visual-studio-code #.net-core #launch

#Windows #macos #visual-studio-код #.net-ядро #запуск #visual-studio-code #.net-core

Вопрос:

В omnisharp ReadMe говорится следующее:

Конфигурации, зависящие от операционной системы

Если существуют конкретные команды, которые необходимо изменить для каждой операционной системы, вы можете использовать поля: ‘windows’, ‘osx’ или ‘linux’. Вы можете заменить любое из полей, упомянутых выше, для конкретной операционной системы.

Это мой launch.json файл:

 {
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Launch (console)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/TestConsole/bin/Debug/netcoreapp2.1/TestConsole.dll",
            "args": [
                "c:\git\core\XunitTestLib\Steps\",
                // "~/../../XunitTestLib/Steps"
            ],
            "cwd": "${workspaceFolder}/TestConsole",
            "console": "internalConsole",
            "stopAtEntry": false,
            "internalConsoleOptions": "openOnSessionStart"
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        },
    ]
}
  

При отладке я хочу, чтобы сборки в Windows начинались с "args" записи, которая не раскомментирована, но в mac os я хочу, чтобы она начиналась со строки, которая закомментирована.

Я предполагаю, что я бы продублировал конфигурацию по одному разу для Windows и Mac, для каждого, но это утверждение сбивает с толку:

Вы можете заменить любое из полей, упомянутых выше, для конкретной операционной системы.

Похоже, он говорит, что я могу заменить "args" на "osx" , но это, очевидно, не работает.

Как мне создать конфигурацию для целевой платформы?

Ответ №1:

Оказывается, настроить таргетинг на несколько платформ намного проще, чем я ожидал, и это объясняется здесь применительно к tasks.json файлу (но работает точно так же для launch.json ).

Мой файл launch.json, скорректированный для osx и windows , будет выглядеть следующим образом:

 {
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Launch (console)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/TestConsole/bin/Debug/netcoreapp2.1/TestConsole.dll",
            "windows": {
                "args": [
                    "c:\git\core\XunitTestLib\Steps\"
                ]
            },
            "osx": {
                "args": [
                    "~/../../XunitTestLib/Steps"
                ]
            },
            "cwd": "${workspaceFolder}/TestConsole",
            "console": "internalConsole",
            "stopAtEntry": false,
            "internalConsoleOptions": "openOnSessionStart"
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        },
    ]
}