Prozkoumání spouštěcího konfiguračního souboru
- 11 min
Už jste viděli, že Visual Studio Code ke konfiguraci ladicího programu používá soubor launch.json. Pokud vytváříte jednoduchou konzolovou aplikaci jazyka C#, je pravděpodobné, že Visual Studio Code vygeneruje soubor launch.json se všemi informacemi, které potřebujete k úspěšnému ladění kódu. Existují však případy, kdy potřebujete upravit konfiguraci spuštění, takže je důležité pochopit atributy konfigurace spuštění.
Vlastnosti nastavení spuštění
Soubor launch.json obsahuje v seznamu jednu nebo více configurations konfigurací spuštění. Konfigurace spuštění používají atributy pro podporu různých scénářů ladění. Pro každou konfiguraci spuštění jsou povinné následující atributy:
-
name: Uživatelsky přívětivý název přiřazený ke konfiguraci spuštění. -
type: Typ ladicího programu, který se má použít pro konfiguraci spuštění. -
request: Typ požadavku konfigurace spuštění.
Tato část definuje některé atributy, se kterými se můžete setkat.
Název
Atribut name určuje zobrazovaný název konfigurace spuštění. Hodnota přiřazená k name se zobrazí v rozevíracím seznamu spouštěcích konfigurací (na ovládacím panelu v horní části zobrazení Spustit a Ladit).
Typ
Atribut type určuje typ ladicího programu, který se má použít pro konfiguraci spuštění. Hodnota codeclr určuje typ ladicího programu pro aplikace .NET 5+ (včetně aplikací jazyka C#).
Žádost
Atribut request určuje typ požadavku pro konfiguraci spuštění. V současné době jsou hodnoty launch a attach podporované.
Úkol před spuštěním
Atribut preLaunchTask určuje úlohu, která se má spustit před laděním programu. Samotný úkol lze najít v souboru tasks.json, který je ve .vscode složce spolu s launch.json souborem. Zadání předběžné úlohy build spustí příkaz dotnet build před spuštěním aplikace.
Program
Atribut program je nastaven na cestu k dll aplikace nebo .NET hostitelskému spustitelnému souboru pro spuštění.
Tato vlastnost má obvykle tvar: ${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>.
Kde:
-
<target-framework>je rámec, pro který se sestavuje ladicí projekt. Tato hodnota se obvykle nachází v souboru projektu jako TargetFramework vlastnost. -
<project-name.dll>je název výstupu sestavení laděného projektu, knihovny DLL. Tato vlastnost je obvykle stejná jako název souboru projektu, ale s příponou ".dll".
Příklad: ${workspaceFolder}/bin/Debug/net10.0/Debug101.dll
Poznámka:
Přípona .dll indikuje, že tento soubor je soubor knihovny dll (Dynamic Link Library). Pokud má váš projekt název Debug101, vytvoří se soubor s názvem Debug101.dll , když úloha sestavení zkompiluje program pomocí souborů Program.cs a Debug101.csproj. Soubor Debug101.dll najdete v zobrazení PRŮZKUMNÍKa tak, že rozbalíte složky "bin" a "Debug" a pak otevřete složku, která představuje rozhraní .NET Framework používané vaším projektem kódu, například net10.0. Verze rozhraní .NET Framework je zadána v souboru .csproj.
Cwd
Atribut cwd určuje pracovní adresář cílového procesu.
Argumenty
Atribut args určuje argumenty, které jsou předány programu při spuštění. Ve výchozím nastavení nejsou žádné argumenty.
Konzole
Atribut console určuje typ konzoly, která se používá při spuštění aplikace. Možnosti jsou internalConsole, integratedTerminala externalTerminal. Výchozí nastavení je internalConsole. Typy konzoly jsou definovány takto:
- Nastavení
internalConsoleodpovídá panelu KONZOLY LADĚNÍ v oblasti panelů pod editorem Visual Studio Code. - Nastavení
integratedTerminalodpovídá panelu VÝSTUP v oblasti Panely pod editorem Visual Studio Code. - Nastavení
externalTerminalodpovídá externímu okně terminálu. Příkladem okna terminálu je aplikace příkazového řádku, která je součástí Windows.
Důležité
Panel KONZOLY LADĚNÍ nepodporuje vstup konzoly. Konzolu DEBUG například nelze použít, pokud aplikace obsahuje Console.ReadLine() příkaz. Při práci na konzolové aplikaci jazyka C# pro čtení uživatelského vstupu musí být console nastavení nastaveno na integratedTerminal nebo externalTerminal. Konzolové aplikace, které zapisují do konzoly, ale nečtou z konzoly vstup, mohou použít kterékoliv ze tří console nastavení.
Zastavte se u vstupu
Pokud potřebujete zastavit na vstupním bodě cíle, můžete volitelně nastavit stopAtEntry na true.
Úprava konfigurace spuštění
Existuje spousta scénářů, kdy možná budete muset přizpůsobit konfigurační soubor spuštění. Mnoho z těchto scénářů zahrnuje pokročilé nebo složité scénáře projektu. Tento modul se zaměřuje na dva jednoduché scénáře při aktualizaci konfiguračního souboru spuštění:
- Konzolová aplikace jazyka C# čte vstup z konzoly.
- Pracovní prostor projektu obsahuje více než jednu aplikaci.
Aktualizujte konfiguraci spuštění tak, aby vyhovovala vstupu konzoly.
Jak jste si přečetli dříve, konzole pro ladění nepodporuje vstup z konzoly. Pokud ladíte konzolovou aplikaci, která spoléhá na uživatelský vstup, musíte aktualizovat console atribut v přidružené konfiguraci spuštění.
Úprava atributu console :
Otevřete soubor launch.json v editoru Visual Studio Code.
Vyhledejte atribut konzoly .
Nejprve vyberte dvojtečku a přiřazenou hodnotu, a potom zadejte znak dvojtečky.
Všimněte si, že když přepíšete existující informace dvojtečky, Visual Studio Code IntelliSense zobrazí tři možnosti v rozevíracím seznamu.
Vyberte buď integratedTerminal , nebo externalTerminal.
Uložte soubor launch.json.
Aktualizace konfigurace spuštění tak, aby vyhovovala více aplikacím
Pokud má váš pracovní prostor jenom jeden spouštěný projekt, rozšíření C# automaticky vygeneruje soubor launch.json. Pokud máte více než jeden spouštěný projekt, musíte soubor launch.json upravit ručně. Visual Studio Code vygeneruje soubor launch.json pomocí základní šablony, kterou můžete aktualizovat. V tomto scénáři vytvoříte samostatné konfigurace pro každou aplikaci, kterou chcete ladit. V souboru tasks.json je možné vytvořit předběžné úlohy, jako je úloha sestavení.
Předpokládejme, že pracujete na programovacím projektu, který obsahuje několik konzolových aplikací. Kořenová složka projektu SpecialProjects je složka pracovního prostoru, kterou otevřete v editoru Visual Studio Code při práci na kódu. Máte dvě aplikace, které vyvíjíte, Project123 a Project456. K ladění aplikací použijete zobrazení SPUSTIT A LADIT. Chcete vybrat aplikaci, kterou ladíte, z uživatelského rozhraní. Také chcete, aby byly všechny uložené aktualizace kódu zkompilovány před připojením ladicího programu k vaší aplikaci.
Požadavky pro tento scénář můžete dosáhnout aktualizací launch.json a tasks.json souborů.
Následující snímek obrazovky ukazuje zobrazení PRŮZKUMNÍKa a strukturu složek obsahující Project123 a Project456.
Všimněte si, že .vscode složka obsahující soubory launch.json a tasks.json je přidružena ke složce pracovního prostoru SpecialProjects, nikoli k jednotlivým složkám projektu.
Následující příklad ukazuje, jak můžete nakonfigurovat soubor launch.json tak, aby zahrnoval konfigurace pro aplikace "Project123" i "Project456".
"version": "0.2.0",
"configurations": [
{
"name": "Launch Project123",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject123",
"program": "${workspaceFolder}/Project123/bin/Debug/net10.0/Project123.dll",
"args": [],
"cwd": "${workspaceFolder}/Project123",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Launch Project456",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject456",
"program": "${workspaceFolder}/Project456/bin/Debug/net10.0/Project456.dll",
"args": [],
"cwd": "${workspaceFolder}/Project456",
"console": "internalConsole",
"stopAtEntry": false
}
]
Všimněte si, že název, pole preLaunchTask a program jsou nakonfigurovaná pro konkrétní aplikaci.
Atribut name určuje možnost spuštění, která se zobrazí v uživatelském rozhraní zobrazení SPUSTIT A LADIT, atribut program určuje cestu k vaší aplikaci. Atribut preLaunchTask se používá k určení názvu úlohy, která se provádí před spuštěním ladicího programu. Soubor tasks.json obsahuje pojmenované úkoly a informace potřebné k dokončení úkolu.
Následující příklad ukazuje, jak můžete nakonfigurovat tasks.json soubor. V tomto případě pojmenované úkoly určují operace sestavení, které jsou specifické pro aplikace "Project123" a "Project456". Úloha sestavení zajistí, že se všechny uložené úpravy zkompilují a reprezentují v odpovídajícím souboru .dll připojeném k ladicímu nástroji.
"version": "2.0.0",
"tasks": [
{
"label": "buildProject123",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project123/Project123.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "buildProject456",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project456/Project456.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
Po aktualizaci souborů launch.json a tasks.json se v zobrazení SPUSTIT A LADĚNÍ zobrazí možnosti spuštění pro ladění aplikace Project123 nebo Project456. Následující snímek obrazovky ukazuje názvy spouštěcích konfigurací zobrazených v rozevíracím seznamu konfigurace spuštění:
Rekapitulace
Tady jsou dvě důležité věci, které je potřeba si z této lekce zapamatovat:
- Konfigurace spuštění se používají k určení atributů, jako jsou
name,type,request,preLaunchTask,programaconsole. - Vývojáři můžou upravit konfiguraci spuštění tak, aby vyhovovala požadavkům projektu.