Создание общедоступного компоновочного блока версии 2.0.0.0
Создание общедоступного компоновочного блока версии 2.0.0.0
Теперь обновите свой проект CarLibrary, добавив в него определение нового перечня MusicMedia, определяющего четыре возможных музыкальных устройства.
// Содержит информацию об источнике музыки.
public enum MusicMedia {
musicCd,
musicTape,
musicRadio,
musicMp3
}
Также добавьте для типа Car новый открытый метод, который позволит вызывающей стороне включить один из имеющихся проигрывателей.
public abstract class Car {
…
public void TurnOnRadio(bool musicOn, MusicMedia mm) {
if (musicOn) MessageBox.Show(string.Format("Шум {0}", mm));
else MessageBox.Show("И тишина…");
}
…
}
Измените конструкторы класса Car, чтобы отображалось окно MessageBox, в котором подтверждается использование CarLibrary именно версии 2.0.0.0.
public abstract class Car {
…
public Car() {
MessageBox.Show("Car 2.0.0.0");
}
public Car(string name, short max, short curr) {
MessageBox.Show("Car 2.0.0.0");
petName = name; maxSpeed = max; currSpeed = curr;
}
…
}
Наконец, до начала новой компиляции не забудьте изменить значение версии этого компоновочного блока на 2.0.0.0 с помощью изменения значения, передаваемого атрибуту [AssemblyVersion].
// CarLibrary версии 2.0.0.0 (теперь с музыкой!).
[assembly: Assembly-Version("2.0.0.0"]
Если вы теперь заглянете в папку BinDebug проекта, то увидите, что там присутствует новая версия компоновочного блока (2.0.0.0), в то время как версия 1.0.0.0 в полной безопасности хранится в подкаталоге Версия 1. Установите этот новый компоновочный блок в папку GAC в соответствии с инструкциями, предложенными в этой главе выше. Обратите внимание на то, что теперь вы будете иметь две версии одного и того же компоновочного блока (рис. 11.25).
Рис. 11.25. Параллельное выполнение
Если теперь в программе Проводник Windows выполнить имеющуюся программу SharedCarLibClient.exe с помощью двойного щелчка на ее пиктограмме, вы не увидите окно с сообщением "Саr 2.0.0.0", поскольку соответствующий манифест специально запрашивает версию 1.0.0.0. Так как же тогда дать указание среде CLR о том, чтобы среда выполнила привязку к версии 2.0.0.0? Я рад, что вы об этом спрашиваете.