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

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

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

Установка Ρ‡Π΅Ρ‚ΠΊΠΈΡ… Π³Ρ€Π°Π½ΠΈΡ† Ρ‚ΠΈΠΏΠΎΠ²

Из Π³Π»Π°Π²Ρ‹ 3 Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… понятиях, Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π² основС любого пространства ΠΈΠΌΠ΅Π½ .NET. Напомним, Ρ‡Ρ‚ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ имя Ρ‚ΠΈΠΏΠ° строится ΠΏΡƒΡ‚Π΅ΠΌ добавлСния прСфикса пространства ΠΈΠΌΠ΅Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, System) ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Console). Однако, строго говоря, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, содСрТащий Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ дальнСйшСй ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ°. НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ° с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ названиями (скаТСм, MyCars.dll ΠΈ YourCars.dll), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ пространство ΠΈΠΌΠ΅Π½ (CarLibrary), содСрТащСС класс SportsCar, Ρ‚ΠΎ эти классы Π²ΠΎ "всСлСнной" .NET Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрсиями

ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠ°ΠΌ .NET назначаСтся состоящий ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… частСй числовой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вСрсии, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ β€ΉΠ³Π»Π°Π²Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ вСрсии›.β€ΉΠ΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ вСрсии›.β€ΉΠ½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈβ€Ί.β€ΉΠ½ΠΎΠΌΠ΅Ρ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°β€Ί (Ссли Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ явно ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вСрсии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства [AssemblyVersion], ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ автоматичСски ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вСрсии 0.0.0.0). Π­Ρ‚ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² совокупности с Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° позволяСт мноТСству вСрсий ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΡΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ Π½Π΅Π΅ машинС Π² ΠΏΠΎΠ»Π½ΠΎΠΉ Π³Π°Ρ€ΠΌΠΎΠ½ΠΈΠΈ, ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ строго ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. Как Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² этой Π³Π»Π°Π²Π΅ ΠΏΠΎΠ·ΠΆΠ΅, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ строго Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ срСда CLR способна Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ запросу Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π° вСрсия ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, которая трСбуСтся.

БамоописаниС

ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ с частичным самоописаниСм, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½ΠΈΡ… содСрТится информация ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ функционирования ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ System.Windows.Forms.dll ΠΈ System. Drawing.dll, Ρ‚ΠΎ информация ΠΎ Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ записана Π² манифСст ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. ВспомнитС ΠΈΠ· Π³Π»Π°Π²Ρ‹ 1, Ρ‡Ρ‚ΠΎ манифСст – это Π±Π»ΠΎΠΊ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… сам ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ (имя, вСрсия, информация ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ… ΠΈ Ρ‚.Π΄.).

ΠšΡ€ΠΎΠΌΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… манифСста, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ содСрТит ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ структуру ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ содСрТащСгося Ρ‚ΠΈΠΏΠ° (ΠΈΠΌΠ΅Π½Π° Ρ‡Π»Π΅Π½ΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ интСрфСйсы, Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы, конструкторы ΠΈ Ρ‚.Π΄.). И ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ докумСнтируСтся Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ "краснорСчиво", срСда CLR Π½Π΅ обращаСтся ΠΊ рССстру систСмы Win32 для выяснСния размСщСния ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π²ΡˆΠ΅ΠΉΡΡ Ρ€Π°Π½Π΅Π΅ Microsoft ΠΌΠΎΠ΄Π΅Π»ΠΈ программирования COM). Из этой Π³Π»Π°Π²Ρ‹ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ срСда CLR ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΡƒΡŽ схСму получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

БрСдства ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΡ‚Π°Π»Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ "ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅" ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ "общСдоступныС". ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅), Ρ‡Ρ‚ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ‚. ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, доступными для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ – Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ кэш ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² (CAG).

НСзависимо ΠΎΡ‚ Π²ΠΈΠ΄Π° инсталляция ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ для Π½ΠΈΡ… XML-Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ срСдС CLR "ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅" ΠΎ Ρ‚ΠΎΠΌ, Π³Π΄Π΅ слСдуСт ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° слСдуСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Π½Π° локальной машинС, Π² вашСй локальной сСти ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ адрСсу URL Π² Web слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ XML-Ρ„Π°ΠΉΠ»Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π² дальнСйшСм ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой Π³Π»Π°Π²Ρ‹.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°  .NET

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСимущСствах, обСспСчиваСмых ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ .NET, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ смСстим Π°ΠΊΡ†Π΅Π½Ρ‚Ρ‹ ΠΈ попытаСмся ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‚ΠΎ, ΠΊΠ°ΠΊ устроСны ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структуры, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ .NET (*.dll ΠΈΠ»ΠΈ *.exe) состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов.

β€’ Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Win32

β€’ Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ CLR

β€’ CIL-ΠΊΠΎΠ΄

β€’ ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ°

β€’ ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°

β€’ ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ встроСнныС рСсурсы

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° элСмСнта (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Win32 ΠΈ CLR) – это Π±Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Ρ‡ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ этих Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² здСсь прСдлагаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самая общая информация. Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ этого ΠΌΡ‹ ΠΈ рассмотрим всС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ элСмСнты ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Win32

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Win32 Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ срСдствами ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм сСмСйства Windows. Π”Π°Π½Π½Ρ‹Π΅ этого Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏ прилоТСния (консольноС, с графичСским интСрфСйсом ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° *.dll). Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Win32 ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ .NET с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ dumpbin.exe (Π² ΠΎΠΊΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки .NET Framework 2.0 SDK) с Ρ„Π»Π°Π³ΠΎΠΌ /headers. На рис. 11.1 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Win32 для ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° CarLibrary.dll, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ построитС Π² этой Π³Π»Π°Π²Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ CLR

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ CLR- это Π±Π»ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ .NET (ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚, благодаря компилятору C#), Ρ‡Ρ‚ΠΎΠ±Ρ‹ срСда CLR ΠΈΠΌΠ΅Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ…. По сути, этот Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ опрСдСляСт мноТСство Ρ„Π»Π°Π³ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… срСдС выполнСния Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ структуру Π΄Π°Π½Π½ΠΎΠ³ΠΎ управляСмого Ρ„Π°ΠΉΠ»Π°. НапримСр, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„Π»Π°Π³ΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ рСсурсов Π² Ρ„Π°ΠΉΠ»Π΅, Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ срСды выполнСния, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ создавался ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ) ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΈ Ρ‚.Π΄. Если с dumpbin.exe ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ /clrheader, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° CLR для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° .NET, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 11.2.

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ CLR ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° прСдставляСтся нСуправляСмой структурой C-Ρ‚ΠΈΠΏΠ° (IMAGE _ COR20 _ HEADER), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ C-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° corhdr.h.

Рис. 11.1. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Win32 ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°

Рис. 11.2. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° CLR ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°

Для заинтСрСсованных Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π²ΠΈΠ΄ΠΎΠΌ структуры, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ здСсь ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

// Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° CLR 2.0.

 typedef struct IMAGE_COR20_HEADER {

 // ВСрсии Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.

 ULONG cb;

 USHORT MajorRuntimeVersion;

 USHORT MinorRuntimeVersion;

 // Π’Π°Π±Π»ΠΈΡ†Π° символов ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ информация.

 IMAGE_DATA_DIRECTORY MetaData;

 ULONG Flags;

 ULONG EntryPointToken;

 // Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ связывания.

 IMAGE_DATA_DIRECTQRY Resources;

 IMAGE_DATA_DIRECTORY StrongNameSignature;

 // Бтандартная информация адрСсации ΠΈ связывания.

 IMAGE_DATA_DIRECTQRY CodeManagerTable;

 IMAGE_DATA_DIRECTORY VTableFixups;

 IMAGE_DATA_DIRECTORY ExportAddressTableJumps;

 // Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для

 // Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ использования – обнуляСтся)

 IMAGE_DATA_DIRECTORY ManagedNativeHeader;

} IMAGE_COR20_HEADER;

Π‘Π½ΠΎΠ²Π° ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ .NET-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅ придСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Win32 ΠΈ CLR (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ случая, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ управляСмый компилятор). Π’Π°ΠΌ достаточно ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ .NET ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ содСрТит эти Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ срСдой выполнСния .NET ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Win32.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ CIL, ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° ΠΈ манифСст ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°

Π’ своСй Π±Π°Π·Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ содСрТит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ CIL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, являСтся ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ языком, Π½Π΅ зависящим ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ процСссора. Π’ срСдС выполнСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ CIL-ΠΊΠΎΠ΄ компилируСтся "Π½Π° Π»Π΅Ρ‚Ρƒ" (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JIT-компилятора [just-in-time compiler – ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ компилятор]) Π² спСцифичСскиС для Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСссора инструкции. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ .NET Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² условиях самого ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ разнообразия Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, устройств ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· понимания особСнностСй языка программирования CIL, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² Π³Π»Π°Π²Π΅ 15 прСдлагаСтся ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² синтаксис ΠΈ сСмантику CIL.

ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Ρ‚Π°ΠΊΠΆΠ΅ содСрТит ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ содСрТащихся Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ссылаСтся Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Π‘Ρ€Π΅Π΄Π° выполнСния .NET ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эти ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ для нахоТдСния Ρ‚ΠΈΠΏΠΎΠ² (ΠΈ ΠΈΡ… Ρ‡Π»Π΅Π½ΠΎΠ²) Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, для размСщСния Ρ‚ΠΈΠΏΠΎΠ² Π² памяти ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π”Π΅Ρ‚Π°Π»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… .NET Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒΡΡ Π² Π³Π»Π°Π²Π΅ 12 ΠΏΡ€ΠΈ рассмотрСнии сСрвисов отобраТСния.