× Aktuálně z oboru

Programátoři po celém světě dnes slaví Den programátorů [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]
Celá zprávička [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]

Kompilace a ladění .NET aplikací z příkazového řádku

[ http://programujte.com/profil/2373-dusan-janosik/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/118-zdenek-lehocky/ ]Google [ ?rel=author ]       11. 1. 2007       21 867×

V tomto článku bych vám chtěl ukázat možnosti ladění a kompilace .NET aplikací prostřednictvím příkazového řádku. Řekl bych, že to patří k základním dovednostem .NET vývojařů a na tomto serveru to doposud chybělo.

Naprostá většina z vás využívá při práci s jazykem C# vývojové prostředí, které se stará o kompilaci projektu a obsahuje grafický debugger – Visual Studio 2005 [ http://msdn.microsoft.cz/vstudio/ ], #Develop [ http://www.icsharpcode.net/OpenSource/SD/ ] nebo třeba Turbo C# [ http://www.turboexplorer.com/ ]. Je to pochopitelné, ale přesto může nastat situace, kdy dané IDE není k dispozici a je nutné kompilovat a ladit aplikace prostřednictvím příkazového řádku. V tomto článku vám přiblížím základní možnosti nástrojů csc.exe a cordbg.exe, protože si myslím, že ovládání těchto nástrojů by mělo patřit k základním dovednostem .NET programátorů. Zmíněné nástroje jsou součásti balíku .NET Framework 2.0 SDK [ http://www.microsoft.com/downloads/details.aspx?familyid=fe6f2099-b7b4-4f47-a244-c96d69c35dec&displaylang=en ].

Konfigurace PC

Než začnete s kompilátorem a debuggerem pracovat, musíte systému říct, kde je má hledat. Nejrychlejší je spuštění příkazového řádku přes zástupce SDK Command Prompt, který by se měl nacházet v nabídce Start → Všechny programy → Microsoft .NET Framework SDK v2.0. Pokud tomu tak není, můžete ho jednoduše vytvořit. Jako cíl nového zástupce uveďte (včetně všech uvozovek):

C:\WINDOWS\SYSTEM32\cmd.exe /k ""C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sdkvars.bat""

Do části „Spustit v“ zadejte:

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\"

Pokud chcete k nástrojům jednoduše přistupovat z běžného příkazového řádku, bude nutné pozměnit obsah systémové proměnné Path. To provedete podle následujícího postupu:

  1. Klikněte pravým tlačítkem na ikonu Tento počítač a zvolte Vlastnosti.
  2. Na záložce Upřesnit stiskněte tlačítko Proměnné prostředí.
  3. V seznamu Systémové proměnné poklikejte na proměnnou Path.
  4. Každá hodnota je od předcházející oddělená středníkem. Pro konfiguraci kompilátoru csc.exe přidejte cestu k adresáři .NET Frameworku:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\
  1. Pro využívání debuggeru cordbg.exe a dalších nástrojů přidejte ještě cestu k adresáři .NET SDK:
C:\Program Files\Microsoft Visual Studio 8\SDK\V2.0\Bin\

Práce s kompilátorem

Teď už jste připraveni k pohodlné kompilaci souborů .cs. V textovém editoru vytvořte nový soubor a zapište do něj zdrojový kód:

using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Test");
        }
    }
}

Uložte soubor na nějaké vhodné místo (např. C:\Test) pod názvem Test.cs. Teď vás seznámím se základními výstupními volbami kompilátoru csc.exe. Volby se zapisují v podobě přepínačů před názvem vstupního souboru. V závorce jsou uvedené zkrácené tvary. Další možnosti kompilátoru zobrazíte příkazem csc /?.

Volba Význam
/out Uvádí název právě vytvářené assembly.
/target:exe [/t:exe] Vytvoří spustitelnou konzolovou aplikaci.
/target:library [/t:library] Vytvoří jednosouborovou assembly .dll.
/target:module [/t:module] Vytvoří modul – prvek vícesouborové assembly.
/target:winexe [/t:winexe] Podobný přepínač jako /t:exe – nezobrazí okno konzole.

Nyní spusťte příkazový řádek, přejděte do složky, kam jste umístili zdrojový soubor, a zadejte příkaz:

csc /out:Test.exe /target:exe Test.cs

Přepínač /target:exe můžete nahradit zkratkovým tvarem /t:exe a nebo ho můžete úplně vynechat, protože se jedná o výchozí volbu. Pokud nemáte zvláštní požadavky, můžete vynechat i přepínač /out. V takovém případě dojde k automatické volbě názvu assembly. V případě .dll bude název stejný jako název počátečního vstupního souboru, v případě .exe by měl být zvolen název typu, který obsahuje metodu Main(). Následně můžete aplikaci spustit.

Budete-li chtít kompilovat aplikaci z několika vstupních souborů, stačí uvést jejich výčet nebo můžete použít zástupný znak *, kterým informujete kompilátor, že má použít všechny vstupní soubory z daného adresáře.

csc /out:Test.exe /target:exe *.cs

Odkazy na externí assembly

V předchozí části jste využívali typ System.Console, který je uveden v assembly mscorlib.dll – kompilátor na ní odkazuje automaticky, ale můžete to zrušit uvedením přepínače /nostdlib. Nyní trochu pozměňte obsah zdrojového souboru.

using System;
using System.Windows.Forms;
using System.Drawing;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Test");
            MessageBox.Show("Test System.Windows.Forms");
        }
    }
}

Odkazy na externí assembly přidáváte prostřednictvím klíčového slova using. Následně musíte kompilátor informovat, která assembly obsahuje použité jmenné prostory – to uděláte prostřednictvím přepínače /reference (zkráceně /r). V tomto případě je „nutné“ uvést assembly System.Windows.Forms.dll, protože používáte typ System.Windows.Forms.MessageBox a assembly System.Drawing pro demonstraci odkázání na více externích assembly (oddělují se středníkem).

csc /r:System.Windows.Forms.dll;System.Drawing.dll /out:Test.exe /target:exe *.cs

Příkazové soubory

Při budování složitějších aplikací by bylo při nejmenším zdlouhavé zadávat každý příkaz zvlášť. Proto je možné využívat tzv. příkazové soubory. Příkazové soubory mají příponu .rsp a obsahují všechny příkazy, které se mají při kompilaci vykonat. Vytvořte nový soubor a uložte ho do stejného adresáře jako Test.rsp.

# odkazy na assembly
/r:System.Windows.Forms.dll;System.Drawing.dll

# název a typ výstupní assembly
/out:Test.exe /target:exe 

# vstupní soubory
*.cs

Příkazový soubor předáte kompilátoru prostřednictvím znaku @, můžete samozřejmě uvést více příkazových souborů.

csc /out:NewTest.exe @Test.rsp

Uvedený přepínač /out nebude platný, protože bude překryt příkazem v souboru Test.rsp a název výstupní assembly tedy bude Test.exe. Výjimka platí pro přepínač /r, který je kumulativní.

Kompilátor implicitně využívá příkazový soubor csc.rsp, který je umístěn ve stejném adresáři jako samotný kompilátor. Jeho využívání můžete potlačit přepínačem /noconfig.

Práce s debuggerem

Debuggeru pro příkazový řádek se budu věnovat méně podrobně, protože ho jen málokdo bude používat. Níže naleznete seznam základních příkazů, které je možné použít. Podobně jako u kompilátoru je možné zobrazit další možnosti příkazem cordbg /?.

Příkaz Význam
break [b] Nastaví nebo zobrazí zarážky.
delete [del] Odstraní jednu nebo více zarážek.
exit [ex] Ukončí práci debuggeru.
go [g] Pokračuje v ladění, dokud nenarazí na další zarážku.
out [o] Krokuje ven z aktuální funkce.
print [p] Vytiskne všechny načtené proměnné.
si Krokuje k dalšímu řádku.
so Krokuje přes další řádek.

Než začnete svou aplikaci ladit, je dobré vygenerovat pro ni ladící symboly – když to neuděláte, nebudete moci při ladění prohlížet svůj zdrojový kód, ale pouze kód CIL, o kterém toho pravděpodobně moc nevíte. Soubor s ladícími symboly vytvoříte uvedením přepínače /debug při kompilaci.

csc /debug @Test.rsp

Pokud máte vygenerovaný soubor s ladícími symboly (přípona .pdb), stačí už jen otevřít relaci s cordbg.exe.

cordbg Test.exe

Více se debuggeru věnovat nebudu – v případě potřeby si vyhledejte informace v dokumentaci .NET Framework SDK.

Závěr

Zmíněné postupy je možné ve velké míře aplikovat i na kompilátory ostatních .NET jazyků, ale nikdy je nepoužívejte při tvorbě rozsáhlejších projektů – bude to pro vás znamenat pouze velkou ztrátu času. Veškeré zmíněné cesty k adresářům upravte vzhledem ke konfiguraci vašeho systému a k verzi nainstalovaného .NET Frameworku.


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2007010703-kompilace-a-ladeni-net-aplikaci-z-prikazoveho-radku/ ].