Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V této příručce se dozvíte, jak interaktivně ladit zdrojový kód jazyka C# pro zkompilovaný modul PowerShellu pomocí editoru Visual Studio Code (VS Code) a rozšíření jazyka C#.
Předpokládá se znalost ladicího programu editoru Visual Studio Code.
Obecný úvod do ladění v editoru Visual Studio Code najdete v tématu Ladění v editoru Visual Studio Code.
Příklady ladění souborů a modulů skriptů PowerShellu najdete v tématu Použití editoru Visual Studio Code pro vzdálené úpravy a ladění.
Tato příručka předpokládá, že jste si přečetli a postupovali podle pokynů v příručce Psaní přenositelných modulů.
Vytvoření úlohy sestavení
Před spuštěním ladicí relace automaticky sestavte projekt. Opětovné sestavení zajistí, že budete ladit nejnovější verzi vašeho kódu.
Konfigurace úlohy sestavení:
Na paletě příkazů spusťte příkaz Konfigurovat výchozí úlohu sestavení.
V dialogovém okně Vyberte úlohu pro konfiguraci zvolte Vytvořit soubor tasks.json ze šablony.
V dialogovém okně Vybrat šablonu úlohy zvolte .NET Core.
Pokud ještě neexistuje, vytvoří se nový soubor tasks.json.
Otestování úlohy sestavení:
Na paletě příkazů spusťte příkaz Spustit úlohu sestavení.
V dialogovém okně Vyberte úlohu sestavení, kterou chcete spustit, zvolte sestavení.
Informace o uzamčení souborů DLL
Ve výchozím nastavení se v podokně terminálu nezobrazuje výstup úspěšného sestavení. Pokud se zobrazí výstup, který obsahuje text soubor projektu neexistuje, měli byste upravit soubor tasks.json. Zahrňte explicitní cestu k projektu jazyka C# vyjádřenou jako "${workspaceFolder}/myModule". V tomto příkladu myModule je název složky projektu. Tato položka musí být za položkou build v seznamu args následujícím způsobem:
{
"label": "build",
"command": "dotnet",
"type": "shell",
"args": [
"build",
"${workspaceFolder}/myModule",
// Ask dotnet build to generate full paths for file names.
"/property:GenerateFullPaths=true",
// Do not generate summary otherwise it leads to duplicate errors in Problems panel
"/consoleloggerparameters:NoSummary",
],
"group": "build",
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
}
Během ladění se knihovna DLL modulu naimportuje do relace PowerShellu v terminálu VS Code. Knihovna DLL se uzamkne. Při spuštění úlohy sestavení se zobrazí následující zpráva bez zavření relace terminálu:
Could not copy "obj\Debug\netstandard2.0\myModule.dll" to "bin\Debug\netstandard2.0\myModule.dll"`.
Před opětovném sestavením je nutné zavřít terminálové relace.
Nastavení ladicího programu
Aby bylo možné ladit cmdlet PowerShell, je potřeba nastavit vlastní konfiguraci spuštění. Tato konfigurace se používá k:
- Sestavení zdrojového kódu
- Spusťte PowerShell s načteným modulem
- Nechte PowerShell otevřený v podokně terminálu.
Když vyvoláte svůj cmdlet v terminálové relaci, ladicí program se zastaví na všech zarážkách nastavených ve zdrojovém kódu.
Konfigurace launch.json pro PowerShell
Instalace rozšíření C# pro Visual Studio Code
V okně Ladění přidejte konfiguraci ladění.
V dialogovém okně
Select environmentzvolte.NET CoreSoubor
launch.jsonse otevře v editoru. Když je kurzor uvnitř poleconfigurations, zobrazí se selektorconfiguration. Pokud tento seznam nevidíte, vyberte Přidat konfiguraci.Pokud chcete vytvořit výchozí konfiguraci ladění, vyberte Spustit konzolovou aplikaci .NET Core:
Upravte pole
name,program,argsaconsolenásledujícím způsobem:{ "name": "PowerShell cmdlets: pwsh", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "pwsh", "args": [ "-NoExit", "-NoProfile", "-Command", "Import-Module ${workspaceFolder}/myModule/bin/Debug/netstandard2.0/myModule.dll", ], "cwd": "${workspaceFolder}", "stopAtEntry": false, "console": "integratedTerminal" }
Pole program slouží ke spuštění pwsh, aby bylo možné spustit laděný cmdlet. Argument -NoExit zabrání ukončení relace PowerShellu, jakmile se modul naimportuje.
Cesta v argumentu Import-Module je výchozí výstupní cesta sestavení, pokud jste postupovali podle průvodce Jak vytvářet přenosné moduly. Pokud jste vytvořili manifest modulu (soubor.psd1), měli byste místo toho použít cestu k němu. Oddělovač cest / funguje ve Windows, Linuxu a macOS. Ke spuštění příkazů PowerShellu, které chcete ladit, musíte použít integrovaný terminál.
Poznámka
Pokud se ladicí program nezastaví na žádných zarážkách, podívejte se do ladicí konzoly Visual Studio Code na řádek s textem:
Loaded '/path/to/myModule.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Pokud se zobrazí, přidejte do konfigurace spuštění "justMyCode": false (na stejné úrovni jako "console": "integratedTerminal".
Konfigurace launch.json pro Windows PowerShell
Tato konfigurace spuštění funguje pro testování rutin ve Windows PowerShellu (powershell.exe).
Vytvořte druhou konfiguraci spuštění s následujícími změnami:
nameby mělo býtPowerShell cmdlets: powershelltypeby mělo býtclrprogramby mělo býtpowershellMěl by vypadat takto:
{ "name": "PowerShell cmdlets: powershell", "type": "clr", "request": "launch", "preLaunchTask": "build", "program": "powershell", "args": [ "-NoExit", "-NoProfile", "-Command", "Import-Module ${workspaceFolder}/myModule/bin/Debug/netstandard2.0/myModule.dll", ], "cwd": "${workspaceFolder}", "stopAtEntry": false, "console": "integratedTerminal" }
Spuštění ladicí relace
Nyní je všechno připravené k zahájení ladění.
Umístěte zarážku do zdrojového kódu pro rutinu, kterou chcete ladit:
Ujistěte se, že je v rozevírací nabídce konfigurace v zobrazení ladění vybrána příslušná konfigurace rutiny PowerShellu.
Stiskněte F5 nebo klikněte na tlačítko Spustit ladění.
Přepněte do podokna terminálu a vyvolejte cmdlet.
vyvolání rutiny
Provádění se zastaví na bodu přerušení:
Můžete procházet zdrojový kód, kontrolovat proměnné a kontrolovat zásobník volání.
Chcete-li ukončit ladění, klepněte na tlačítko Zastavit na panelu nástrojů ladění nebo stiskněte Shift+F5. Prostředí použité pro ladění ukončí a uvolní zámek u zkompilovaného souboru DLL.