Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 124

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 118 119 120 121 122 123 < 124 > 125 126 127 128 129 130 .. 320 >> Следующая

Рис. 6.32. Сохраняем SharedAssembly.dll версии 1.0.0.0 в отдельной папке
ния этих двух частей номера, просто запишите их в атрибут":.¦ і on следующим образом:
[assembly: Asse*! У Vers IcnCLO.C. С")!
Работа с разными версиями SharedAssembly
Чтобы окончательно прояснить все вопросы, мы поработаем с разными версиями сборки SharredAssembly.dlL Вначале лы внесем изменения в содержимое SharedAssembly. d 11, сохраним новый вариант сборки с новым номером версии, а затем поме стим этот новый вариант в GAC совместно с исходной версией. Далее мы будем обращаться из клиентского приложения к разным версиям этой сборки.
Первое, что мы сделаем, — внесем изменения в конструктор класса VWMmIVa для отображения версии уже сущесгьующей сборки:
public VWMi ni Vati U ¦і
MessageBox.ShowC"Using version 1.0.0.0". "Shared Car"):
}
Далее мы установим для атрибута Assemblers і on значение 1.0.0. С (так, к об этом рассказывалось в предыдущем разделе). После этого мы откомпилируем проект, создав новый файл SharedAssembty.dlL
Следующее, что мы должны сделать - удалить из глобального кэша сборок тот файл SharedAssembLy.dll, который был туда установлен ранее. Удаление производится точно так же, как и удаление любого другого файла.
Затем переместим только что созданный нами файл сборки SharedAssembly.dll версии 1.0.0.0 в новую папку (назовем ее Version!), чтобы сохранить этот вариант сборки в неприкосновенности (рис. 6.32).
Далее установим SharedAssembly.dll версии 1.0.0.0 в GAC. Обратите внимание на номер версии, показываемый GAC для этой сборки (рис. 6.33).
Щелкнем правой кнопкой мыши на сборке в GAC и откроем ее свойства: мы увидим, что в качестве пути кэтой сборке указан подкаталог Version 1. Далее перекомпилируем и запустим приложение SharedAssemblyUser. Оно должно запуститься без каких-либо проблем.
296 Глава 6 • Сборки, потоки и домены приложений
QIe ?dtt View Favorites loot Help
»¦fei!* - «¦: - !З [ ^Search UFoidan 0}"? gjf X *> ]
Global Assembly Name I Тура | Version I Culture I Public Key Toban ±_
djOsoap-idoox.net ^**B.lJ.ll,lJ 6Qef1b4d8a6adClb!
Aoapldevelop.com 0.0.0,0 535012815022e<>fi „
Рис, б.ЗЗ. Помещаем сборку версии 1.0.0.0 в GAC
Создаем SharedAssembly версии 2.0
Чтобы проиллюстрировать политику версий .NET, мы внесем изменения в каш проект SharedAssembly. Добавим в класс VWMiniVan еще один член (который будет использовать специально созданное нами перечисление), для того чтобы у пользователя появился больший выбор мелодий. Кроме того, мы изменим текст сообщения, которое будет выдавать конструктор.
//KaKViO музыку вы предпочитаете? public епшп BandName
{
TonesOnTail. SMrwyPupoy. *?ftones. PTP
}
public: ,. . VWMimVan
{
public VWMiniVanO
{ MessageBox.Show("Using version 2.0.0.01". "Shared Car"); ) public void CrankGootffures(BaivJNanie band)
case BandName.deftones:
MeSSageBoX.ShowCSo forget about nie..."); break;
case BancNiilPi.j Ml'';
MessageBox.ShowC'Tick tick tock..."); break;
case BandName.SkinnyPuppy:
MessageBox.ShowfWater vapor, to air..."): break:
case BandName.TonesOnTa і 1:
MessageBox.Show("Dooooh the rain. Oh the raiin");
break; default:
break:
switch(band)
}
Управление загрузкой разных версий сборок 297
Перед компиляцией изменим версию сборки на 2.0.0.0:
// Изменение в файле AsserablyInfo.cs... [.assembly: Assemb7yVersion("2.0.0.D")]
После компиляции в каталоге Debug будет создан новый файл SharedAssembLy.dll версии 2.0.0.0 (в то время как старый вариант этого файла версии 1.0.0.0 остался в неприкосновенности в подкаталоге Versionl). Установим новый вариант SharedAssembly.d Il в GAC. Теперь в GAC у нас мирно сосуществуют две разные версии одной и той же сборки (рис. 6.34).

fl!« Edit у.єи payrjritss t1j0i1 ;j(.:p ЦД
"*~ П Ж, - "* - IbJ 'й Search ЧЪ Folders {І [ Ч* X Ш*
,Address [Jj D:\winnt^Assembly
Global Assembly Warne ' Type Version г Culture Public Key Token
HCl Reg code 1.0.2411.0 b03f5f7fHd50a3a
¦ ailRemoteAxImp 1.0.2411.0 bu3f5f7rTld50a3a
jrilSamplesP.untime. Remo... 0.0.0.0 cal360f4c45cl7bB
sB&services.xmethods. net n n n n 5054632e3bd38253 — J
2.0.0.0 6c0646f072c6fe39
iSfiSharedAssembly ^ 1,0,0.0 6c0646FD72c6Fe39
J^s oap.idoox.net 60ef4b4dBa6ad0b5
1 ЬЬухЦг) selected
Рис. 6.34. В GAC могут одновременно находиться две версии одной и той же сборки
Теперь, когда в нашем распоряжении есть две версии одной сборки, нам предстоит узнать, как можно управлять загрузкой разных версий сборок при помощи файлов конфигурации приложений. Однако вначале мы опишем политику версии .NET по умолчанию — которая используется тогда, когда нет дополнительных заний в файлах конфигурации приложений.
Политика версий по умолчанию
Как мы уже топор! і л и, если запрашиваемые клиентом и реально имеющиеся в СЛ(' сборки отличаются друг от друга номером основной или дополнительной версий, то среда выполнения посчитает их несовместимыми и клиенту будет выдано сообщение об ошибке. Если же различия в номерах версий - только на уровне номера редакции или номера сборки (QFE), то такие сборки .NETсчитает совместимыми. Однако что будет, если в GAC есть сборки версий 1.0.0.0 и 1,0.2.2, а клиент явно запрашивает версию 1.0.0.0V Ответ прост: среда выполнения .NiTVпо умолчанию предоставит ему более свежий совместимый вариант сборки (то есть 1.0.2.2). Таким образом, гарантируется, что клиент получает не только совместимый вариант сборки, но вариант с наибольшим количеством исправленных ошибок.
Предыдущая << 1 .. 118 119 120 121 122 123 < 124 > 125 126 127 128 129 130 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100