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

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

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

   β€ΉdependentAssemblyβ€Ί

    β€ΉassemblyIdentity name="CarLibrary" publicKeyToken="l91ebf55656e0a43" /β€Ί

    β€ΉpublisherPolicy Π°Ρ€Ρ€lΡƒ="yes" /β€Ί

    β€ΉbindingRedirect oldVersion= "1.0.0.0" newVersion="2.0.0.0" /β€Ί

   β€Ή/dependentAssemblyβ€Ί

  β€Ή/assemblyBindingβ€Ί

 β€Ή/runtimeβ€Ί

β€Ή/configurationβ€Ί

Анализ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структуры GAC

Π˜Ρ‚Π°ΠΊ, всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ структуру GAC. ΠŸΡ€ΠΈ просмотрС ΠΏΠ°ΠΏΠΊΠΈ GAG Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠŸΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ Windows Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ряд ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· общСдоступных ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² всСх ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ вСрсий. Π­Ρ‚Π° графичСская ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° обСспСчиваСтся COM-сСрвСром shfusion.dll. Но, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚ΡŒ, Π·Π° этими ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ слоТная (хотя ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ логичная) структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ прСдставляСт собой структура GAC, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ assembly.

cd c:\windows\assembly

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ dir. Π’ этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, срСди ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ GAC_MISL (рис. 11.26).

Рис. 11.26. Π‘ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ GAC_MSIL

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ GAC_MSIL ΠΈ снова Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ dir. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ список ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π² точности Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ сСрвСром shfusion.dll. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ CarLibrary ΠΈ снова Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ dir (рис. 11.27).

Рис. 11.27. Π’Π½ΡƒΡ‚Ρ€ΠΈ скрытого ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° CarLibrary

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² структурС GAC для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии общСдоступного ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° создаСтся свой ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выбираСтся ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ β€ΉΠ²Π΅Ρ€ΡΠΈΡΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎΠ‘Π»ΠΎΠΊΠ°β€Ί__ΠΊΠΎΠ΄ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎΠšΠ»ΡŽΡ‡Π°. Если ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ CarLibrarΡƒ вСрсии 1.0.0.0, Ρ‚ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‚Π°ΠΌ копию ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (рис .11.28).

Рис. 11.28. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅! ВнутрСнняя копия GAC Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ CarLibrary.dll!

ΠŸΡ€ΠΈ установкС строго ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² структуру GAC опСрационная систСма Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ структуру ΠΏΡƒΡ‚Π΅ΠΌ создания ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ assembly. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ срСда CLR ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², избСгая ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΈΠ·-Π·Π° наличия Ρ„Π°ΠΉΠ»ΠΎΠ² *.dll с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ названиями.

Π€Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ вопрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… обсуТдСния возмоТностСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, это Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ² *.config ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ привязку ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии общСдоступного ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² ΠΎΠ±Ρ…ΠΎΠ΄ вСрсии, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² манифСстС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ВсС это просто прСкрасно, Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ администратором, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ придСтся ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС прилоТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΎΠΉ машинС Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти прилоТСния использовали ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ CarLibrary.dll вСрсии 2.0.0.0. Π’Π²ΠΈΠ΄Ρƒ принятого соглашСния для ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π²Π°ΠΌ придСтся ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ XML-содСрТимоС Π²ΠΎ мноТСство мСст (Π΅Ρ‰Π΅ ΠΈ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ, Π³Π΄Π΅ находятся всС Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ CarLibrary!). ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ для администратора это Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΊΠΎΡˆΠΌΠ°Ρ€ΠΎΠΌ.

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ позволяСт "ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŽ" Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (Π²Π°ΠΌ, Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ, вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ поставщику) ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Π°ΠΉΠ»Π° *.config, которая устанавливаСтся Π² структуру GAC вмСстС с новСйшСй вСрсиСй ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅-Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² *.config Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π‘Ρ€Π΅Π΄Π° CLR Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ манифСст ΠΈ пытаСтся Π½Π°ΠΉΡ‚ΠΈ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π² структурС GAC. Но Ссли ΠΏΡ€ΠΈ этом срСда CLR ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ встроСнныС Π² этот Ρ„Π°ΠΉΠ» XML-Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ выполняСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ GAC.

Π€Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ срСдствами ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ .NET-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ al.exe (это Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ связСй ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°). Π­Ρ‚ΠΎΡ‚ инструмСнт ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ†ΠΈΠΉ, Π½ΠΎ для построСния Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅:

β€’ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° *.config ΠΈΠ»ΠΈ *.xml, содСрТащСго инструкции пСрСнаправлСния;

β€’ имя Ρ„Π°ΠΉΠ»Π°, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ;

β€’ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° *.snk, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для создания подписи Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ;

β€’ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии, Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌΠΎΠΉ создаваСмому Ρ„Π°ΠΉΠ»Ρƒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ CarLibrary.dll, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

al /link: CarLibraryPolicy.xml /out:policy.1.0.CarLibrary.dll /keyf: C:\MyKey\myKey.snk /v:1.0.0.0

Π—Π΄Π΅ΡΡŒ XML-содСрТимоС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ CarLibraryPolicy.xml. Имя Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ policy.β€ΉΠ³Π»Π°Π²Π½Ρ‹ΠΉ(Π½ΠΎΠΌΠ΅Ρ€ вСрсии)β€Ί. β€ΉΠ΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŠΠ½Ρ‹ΠΉ(Π½ΠΎΠΌΠ΅Ρ€ вСрсии)β€Ί.ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉΠ‘Π»ΠΎΠΊ), указываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π° /out. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ имя Ρ„Π°ΠΉΠ»Π°, содСрТащСго значСния ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΈ сСкрСтного ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ прСдставлСно, Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ /keyf. (ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ общСдоступными, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ строго ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.)

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ использования al.exe Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² структурС GAC для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния, "Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ" всС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CarLibrary.dll вСрсии 2.0.0.0.

Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ (ΠΊΠ°ΠΊ администратор систСмы) установили Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (ΠΈ Π½ΠΎΠ²ΡƒΡŽ, Π±ΠΎΠ»Π΅Π΅ позднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°) Π½Π° машинС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈ случаСтся, Π΄Π΅Π²ΡΡ‚ΡŒ ΠΈΠ· дСсяти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΊ использованию вСрсии 2.0.0.0 Π±Π΅Π· всяких ошибок. Однако Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈ доступС ΠΊ CarLibrary.dll вСрсии 2.0.0.0 Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (ΠΌΡ‹ с Π²Π°ΠΌΠΈ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 100%-Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ "ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ" ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° с инструкциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят срСдС CLR ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ установлСнныС Π² GAC Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ .NET, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ установлСнного Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, создайтС Ρ„Π°ΠΉΠ» *.сonfig (с подходящим ΠΈΠΌΠ΅Π½Π΅ΠΌ), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°ΠΌΠΊΠ°Ρ… элСмСнта β€ΉpublisherPolicyβ€Ί установитС для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° apply Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ no. ПослС этого срСда CLR Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Ρ‚ΠΎΠΉ вСрсии, которая ΡƒΠΊΠ°Π·Π°Π½Π° Π² манифСстС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

β€ΉconfiguratΠΎnβ€Ί

 β€Ήruntimeβ€Ί

  β€ΉassemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"β€Ί

   β€ΉpublisherPolicy apply="no" /β€Ί

  β€Ή/assemblΡƒΠ’indingβ€Ί

 β€Ή/runtimeβ€Ί

β€Ή/configurationβ€Ί

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β€ΉcodeBaseβ€Ί

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

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, присвоСнноС Π² Ρ€Π°ΠΌΠΊΠ°Ρ… элСмСнта β€ΉcodeBaseβ€Ί, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ структуры GAC, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ – кэш Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π£Π²ΠΈΠ΄Π΅Ρ‚ΡŒ содСрТимоС кэша Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gacutil.exe, ΡƒΠΊΠ°Π·Π°Π² ΠΏΡ€ΠΈ запускС этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΎΠΏΡ†ΠΈΡŽ /ldl.

Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± установкС ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² Π² GAC, Π±ΡƒΠ΄Π΅Ρ‚ ясно, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ элСмСнта β€ΉcodeBaseβ€Ί, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ строго ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ (Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΊΠ°ΠΊ ΠΆΠ΅ ΠΈΠ½Π°Ρ‡Π΅ срСда CLR смогла Π±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ Π² структуру GAC?).

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, элСмСнт β€ΉcodeBaseβ€Ί ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ для зондирования ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ строго ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. Однако Π² Ρ‚Π°ΠΊΠΎΠΌ случаС адрСс ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° прилоТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности, Ρ‡Π΅ΠΌ элСмСнт β€ΉprivatePathβ€Ί).

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π‘odeBaseΠ‘lient, установитС для Π½Π΅Π³ΠΎ ссылку Π½Π° CarLibrary.dll вСрсии 2.0.0.0 ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ исходный Ρ„Π°ΠΉΠ» Ρ‚Π°ΠΊ.

using CarLibrary;

namespace CodeBaseClient {

 class Program {

  static void Main(string[] args) {

   Console.WriteLine("***** Π—Π°Π±Π°Π²Ρ‹ с CodeBase *****");

   SportsCar с = new SportsCar();

   Console.WriteLine("Π‘ΠΎΠ·Π΄Π°Π½Π° спортивная машина.");