ΠΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET
ΠΠ»Ρ Π²Π°Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΡΠΏΡΠΈΠ·ΠΎΠΌ ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ .NET ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠ°ΡΠΊΠ°Ρ .NET Framework. ΠΠ»Ρ Π²Π°Ρ, ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° .NET-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½Π° ΡΠΆΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° .NET Framework 2.0 SDK (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ .NET-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Visual Studio 2005).
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·Π²Π΅ΡΠ½Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ .NET, ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ. ΠΠΎ ΠΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Microsoft ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ dotnetfx.exe, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² .NET Framework 2.0 SDK, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Ρ ΡΠ·Π»Π° Microsoft.
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ dotnetfx.exe Π²Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² .NET, ΡΠ°ΠΉΠ»Ρ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET (mscoree.dll) ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ .NET (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, GAC).
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ .NET Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠ°ΡΠΊΠ°Ρ .NET Framework, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠΈΠΉ HTML-ΠΊΠΎΠ΄ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, JavaScript-ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½Π°Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ .NET
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ°Π²Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET. ΠΠ΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ .NET ΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Microsoft (Mac OS X, ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ Linux, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ BeOS ΠΈ FreeBSD ΠΈ Π΄Ρ.). Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ Ρ Π²Π°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π²ΠΎ "Π²ΡΠ΅Π»Π΅Π½Π½ΠΎΠΉ" .NET: ΡΡΠΎ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° CLI (Common Language infrastructure β ΠΎΠ±ΡΠ΅ΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°).
ΠΠΎΠ³Π΄Π° Microsoft Π²ΡΠΏΡΡΡΠΈΠ»Π° ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C# ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET, ΠΎΠ½Π° Π²ΡΠΏΡΡΡΠΈΠ»Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π»ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΡΠ·ΡΠΊΠΎΠ² C# ΠΈ CIL, ΡΠΎΡΠΌΠ°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° .NET, Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈ ΡΠ°Π±ΠΎΡΡ Π³ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET (ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ VES, ΠΈΠ»ΠΈ Virtual Execution System β Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ). ΠΡΠ΅ Π»ΡΡΡΠ΅ ΡΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Ecma International (http://www.ecma-internatiΠΎnal.org) Π΄Π»Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ². ΠΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠΌΠΈ Π½Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ:
β’ ECMA-334: ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ·ΡΠΊΠ° C#;
β’ ECMA-335: ΠΎΠ±ΡΠ΅ΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° (CLI).
ΠΠ°ΠΆΠ½ΠΎΡΡΡ ΡΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΡΡΠ½ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΠ΅ΡΡΠΈΠΌ ΡΡΠΎΡΠΎΠ½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠΎΠΈΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ². Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ECMA-335, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π±ΠΎΠ»Π΅Π΅ "ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π»ΡΠ½Ρ", ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° ΠΏΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π±Π». 1.5.
Π’Π°Π±Π»ΠΈΡΠ° 1.5. Π Π°Π·Π΄Π΅Π»Ρ CLI
Π Π°Π·Π΄Π΅Π»Ρ ECMA-335 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π Π°Π·Π΄Π΅Π» I. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ CLI, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° CTS ΠΈ CLS, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET Π Π°Π·Π΄Π΅Π» II. ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ .NET Π Π°Π·Π΄Π΅Π» III. CIL ΠΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ CIL-ΠΊΠΎΠ΄Π° Π Π°Π·Π΄Π΅Π» IV. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΠ°Π΅Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΎΠ±Π·ΠΎΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΈ ΠΏΠΎΠ»Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ .NET Π Π°Π·Π΄Π΅Π» V. ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ "Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ " ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ Π³Π°ΠΊ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° CILΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ IV (ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠ΅ ΠΎΡ CLI-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° (ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄, ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄, ΠΏΠΎΡΠΎΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π΄ΠΎΡΡΡΠΏ, Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π°ΡΠΈΡΡ, XML-ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΠΈ Ρ.Π΄.). Π’Π°ΠΊΠΎΠΉ CLI-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ASP.NET), Π΄ΠΎΡΡΡΠΏ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ (ADO.NET) ΠΈΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Windows Forms).
ΠΠ»Π°Π³ΠΎΠΏΡΠΈΡΡΠ½ΡΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π³Π»Π°Π²Π½ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ .NET ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ CLI Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ°ΠΌΠΈ Microsoft Π΄Π»Ρ ASP.NET, ADO.NET ΠΈ Windows Forms, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Π΅ΡΡΡ Π΄Π²Π΅ Π³Π»Π°Π²Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CLI (ΠΊΡΠΎΠΌΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Microsoft, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Windows). Π₯ΠΎΡΡ Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ .NET-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ .NET-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Microsoft, Π² ΡΠ°Π±Π». 1.6 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Mono ΠΈ Portable.NET.
ΠΠ°ΠΊ Mono, ΡΠ°ΠΊ ΠΈ Portable.NET ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ECMA-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° C# ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET, ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ, Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π² ΡΠΎΡΡΠ°Π² .NET Framework 2.0 SDK ΠΎΡ Microsoft. Π ΡΠΎΠΌΡ ΠΆΠ΅ Mono ΠΈ Portable.NET ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ VB .NET, Java ΠΈ C.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Mono ΠΈΠ»ΠΈ Portable.NET, ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠ½ΠΈΠ³Ρ Π. J. Easton ΠΈ Jason King, Cross-Platform .NET Development: Using Mono, Portable.NET, and Microsoft .NET (Apress, 2004).
Π’Π°Π±Π»ΠΈΡΠ° 1.6. .NET-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ http://www.mono-project.com ΠΡΠΎΠ΅ΠΊΡ Mono ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ CLI Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Linux (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SuSE, Fedora ΠΈ Ρ.Π΄.), Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π½Ρ Win32 ΠΈ Mac OS X http://www.dotgnu.org Portable.NET β ΡΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² CLI Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. Portable.NET Π½Π°ΡΠ΅Π»Π΅Π½ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ (Win32, AIX, BeOS, Mac OS X, Solaris, Π²ΡΠ΅ Π³Π»Π°Π²Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Linux ΠΈ Ρ.Π΄.)Π Π΅Π·ΡΠΌΠ΅
Π¦Π΅Π»ΡΡ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ Π±ΡΠ»ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. Π‘Π½Π°ΡΠ°Π»Π° Π±ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΡ ΡΡ Π΄ΠΎ .NET, Π° Π·Π°ΡΠ΅ΠΌ Π±ΡΠ» ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΎΠ±Π·ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ .NET ΠΈ C# ΠΏΡΡΠ°ΡΡΡΡ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ΅ΠΉ.
Π ΡΡΡΠ½ΠΎΡΡΠΈ .NET ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅ΡΡΠΈ ΠΊ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ (mscoree.dll) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (mscorlib.dll ΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ). ΠΠ±ΡΠ΅ΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (CLR) ΡΠΏΠΎΡΠΎΠ±Π½Π° ΠΏΡΠΈΠ½ΡΡΡ Π»ΡΠ±ΠΎΠΉ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ .NET-ΠΎΠ±ΡΠ΅ΠΊΡ (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ), Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΊ Π²Ρ ΡΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡ, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ CIL-ΠΈΠ½cΡΡΡΠΊΡΠΈΠΉ (Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°), ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ., Π±ΡΠ»Π° Π²ΡΡΡΠ½Π΅Π½Π° ΡΠΎΠ»Ρ ΠΎΠ±ΡΠ΅ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ (CLS) ΠΈ ΠΎΠ±ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ² (CTS).
ΠΠ°ΡΠ΅ΠΌ Π±ΡΠ»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π°, ΡΡΠΈΠ»ΠΈΡΠ° ildasm.exe, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ dotnetfx.exe Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΌΠ°ΡΠΈΠ½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ .NET-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΏΡΠΈΡΠΎΠ΄Π΅ C# ΠΈ .NET.
ΠΠΠΠΠ 2. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ C#
ΠΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ C#, Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ .NET-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π¦Π΅Π»ΡΡ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±Π·ΠΎΡ ΡΠ°ΠΌΡΡ ΡΠ°Π·Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ .NET, Π²ΠΊΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ Visual Studio 2005. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π°ΡΠ½Π΅ΡΡΡ Π³Π»Π°Π²Π° Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ C#, csc.exe, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°., Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΠ»ΠΎΠΊΠ½ΠΎΡ (noteepad.exe). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ Ρ Π²Π°ΠΌΠΈ Π²ΡΡΡΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² .NET Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ cordbg.exe. ΠΡΠ²ΠΎΠΈΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² Π±Π΅Π· Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΌΡ Π·Π°ΡΠ΅ΠΌ Π²ΡΡΡΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° C# c ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ TextPad.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ»ΡΠΊΠΎ csc.exe ΠΈ ΠΠ»ΠΎΠΊΠ½ΠΎΡ/TextPad, Π½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, Π²Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Ρ Π² ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ IDE (Integrated Development Environment β ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ). ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ SharpDevelop β ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ. ΠΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠ½Π° ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΠ΅Ρ ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ .NET, ΠΎΠ±Π»Π°Π΄Π°Ρ ΡΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ, ΡΡΠΎ ΠΎΠ½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°, Π ΠΏΠΎΡΠ»Π΅ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Visual C# 2005 Express ΠΌΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Visual Studio 2005. ΠΠ°ΠΊΠΎΠ½ΡΠΈΡΡΡ Π³Π»Π°Π²Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΠ±Π·ΠΎΡΠΎΠΌ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΡΠ΄Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ .NET (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄) ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌΠΈ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ.