Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘# 2005 И ΠŸΠ›ΠΠ’Π€ΠžΠ ΠœΠ .NET 2.0. 3-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 12

Автор Π­Π½Π΄Ρ€ΡŽ ВроСлсСн

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ доступ ΠΊ пространствам ΠΈΠΌΠ΅Π½

НС ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ снова, Ρ‡Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ являСтся Π½ΠΈΡ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ, ΠΊΠ°ΠΊ подходящим для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° способом логичСски ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ связанныС Ρ‚ΠΈΠΏΡ‹. Π‘Π½ΠΎΠ²Π° рассмотрим пространство ΠΈΠΌΠ΅Π½ System. МоТно ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ System.Console прСдставляСт класс, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ Console ΠΈ содСрТащийся Π² пространствС ΠΈΠΌΠ΅Π½ System. Но для срСды выполнСния .NET это Π½Π΅ Ρ‚Π°ΠΊ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ срСды выполнСния Π²ΠΈΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Π½Π°Π·Π²Π°Π½Π½ΡƒΡŽ System.Console.

Π’ C# ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово using ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ссылки Π½Π° Ρ‚ΠΈΠΏΡ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Допустим, Π²Ρ‹ строитС Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΉ систСмы. Π’ Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ нСкоторая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, основанная Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, для изучСния Ρ‚ΠΈΠΏΠΎΠ² Π² пространствах ΠΈΠΌΠ΅Π½ трСбуСтся врСмя, Π½ΠΎ Π²ΠΎΡ‚ нСсколько ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… "ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ²", подходящих для ссылок Π² описанной Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

// ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния.

using System; // ΠžΠ±Ρ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов,

using System.Drawing; // визуализация Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ,

using System.Windows.Forms; // GDI-элСмСнты,

using System.Data; // ΠΎΠ±Ρ‰ΠΈΠΉ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ,

using System.Data.SqlClient; // доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ MS SQL Server.

Π’Ρ‹Π±Ρ€Π°Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ число пространств ΠΈΠΌΠ΅Π½ (ΠΈ ΡƒΠΊΠ°Π·Π°Π² ссылки Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚), Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляры ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Bitmap (ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ System.Drawing), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ коя,

// Π―Π²Π½Ρ‹ΠΉ список пространств ΠΈΠΌΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

using System;

using System.Drawing;

class MyApp {

 public void DisplayLogo() {

  // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ изобраТСния 20x20.

  Bitmap companyLogo = new Bitmap(20, 20);

  ...

 } 

}

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ссылаСтся Π½Π° System.Drawing, компилятор смоТСт Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс Bitmap являСтся Ρ‡Π»Π΅Π½ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½. Если Π±Ρ‹ Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ здСсь пространство ΠΈΠΌΠ΅Π½ System.Drawing, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляций. Но для опрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅, ΠΈΠ»ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ имя.

// Π—Π΄Π΅ΡΡŒ System.Drawing Π½Π΅ указываСтся!

Using System;

class MyApp {

 public void DisplayLogo() {

  // ИспользованиС Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ

  System.Drawing.Bitmap companyLogo = new System.Drawing.Bitmap(20, 20);

  …

 }

}

ИспользованиС Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ для опрСдСлСния Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ, ΠΈ Π²Ρ‹ Π½Π΅ станСтС Π²ΠΎΠ·Ρ€Π°ΠΆΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово C# using ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ объСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°. Π’ этом тСкстС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ… случаСв, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·-Π·Π° этого Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ явная Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ), отдавая ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ использованию ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова using.

ΠŸΡ€ΠΈ этом слСдуСт ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС using являСтся лишь Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ использования Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ CIL всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΄Π°ΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² CIL ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.

Бсылки Π½Π° внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ

Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ пространства ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова C# using, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ компилятору C# имя ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, содСрТащСго Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ CIL-ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’Ρ‹ΡˆΠ΅ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½ .NET содСрТатся Π² mscorlib.dll. Однако Ρ‚ΠΈΠΏ System.Drawing.Bitmap содСрТится Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ System.Drawing.dll. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² .NET Framework размСщаСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ GAC (Global Assembly Cache - Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ кэш ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²). На ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Windows это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ %windir%\Assembly, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 1.5.

Рис. 1.5. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов Π² GAC

Π’ зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ инструмСнта Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ .NET ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… способов информирования компилятора ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ слСдуСт Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Ρ†ΠΈΠΊΠ» компиляции. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

ИспользованиС ildasm.exe

Если вас ΠΏΡƒΠ³Π°Π΅Ρ‚ пСрспСктива освоСния всСх пространств ΠΈΠΌΠ΅Π½ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET, вспомнитС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ любого пространства ΠΈΠΌΠ΅Π½ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ содСрТит Ρ‚ΠΈΠΏΡ‹, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ сСмантичСски связанныС ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для простого консольного прилоТСния, Ρ‚ΠΎ смСло ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ (срСди ΠΏΡ€ΠΎΡ‡ΠΈΡ…) ΠΎ пространствах ΠΈΠΌΠ΅Π½ System.Windows.Forms ΠΈ System.Web. Если Π²Ρ‹ строитС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями, Ρ‚ΠΎ Π²Π°ΠΌ вряд Π»ΠΈ понадобятся пространства ΠΈΠΌΠ΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² случаС любой Π½ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Π΄Π΅Π»Π°.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ildasm.exe (Intermediate Language Disassembler utility – ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° дизассСмблСра ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ языка) позволяСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ любой ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ .NET ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ содСрТимоС, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ манифСст, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ CIL ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠΎΠ².

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ» ildasm.exe Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π² ΠΏΠ°ΠΏΠΊΡƒ C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin (Ссли Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ildasm.exe Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ мСстС, просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ поиск Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ "ildasm.exe" Π½Π° своСй машинС).

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ² ΠΈ запустив этот Ρ„Π°ΠΉΠ», Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ мСню Fileβ†’Open ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ. Π‘ Ρ†Π΅Π»ΡŒΡŽ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ здСсь (рис. 1.6) ΠΏΠΎΠΊΠ°Π·Π°Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ CSharpCalculator.exe, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΆΠ΅ шла Ρ€Π΅Ρ‡ΡŒ Π²Ρ‹ΡˆΠ΅. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ildasm.exe прСдставляСт структуру ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ всСм Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π΅Ρ€Π΅Π²Π° просмотра.

Рис. 1.6. Π’Π°Ρˆ Π½ΠΎΠ²Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π΄Ρ€ΡƒΠ³ ildasm.exe

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ CIL-ΠΊΠΎΠ΄Π°

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ пространства ΠΈΠΌΠ΅Π½, Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΈΡ… Ρ‡Π»Π΅Π½Ρ‹ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅. Ildasm.exe дозволяСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ CIL-инструкции любого Ρ‡Π»Π΅Π½Π°. НапримСр, Ссли Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Main() класса CalcApp, Ρ‚ΠΎ появится ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ CIL-ΠΊΠΎΠ΄ (рис. 1.7).

Рис. 1.7. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ CIL-ΠΊΠΎΠ΄Π°

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²

Если Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠΎΠ² для Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ β€ΉCtrl+Mβ€Ί. На рис. 1.8 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Calc.Add().

Рис. 1.8. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ildasm.exe

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²

НаконСц, Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ содСрТимоС манифСста ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ MANIFEST (рис. 1.9).

Рис. 1.9. Π”Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° этой строкС ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ манифСст ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°

НС ΡΠΎΠΌΠ½Π΅Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ildasm.exe ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности этого инструмСнта Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΈ дальшС. По ΠΌΠ΅Ρ€Π΅ чтСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΊΠ½ΠΈΠ³ΠΈ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ваши ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ildasm.exe, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ваш ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ C# транслируСтся Π² нСзависимый ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ CIL. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ супСрзвСздой C#, совсСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ экспСртом ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ CIL, Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ синтаксиса CIL Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΡ€Π΅ΠΏΠΈΡ‚ ваши "мускулы программирования".

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ срСды выполнСния .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-ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.