Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 295

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 289 290 291 292 293 294 < 295 > 296 297 298 299 300 301 .. 404 >> Следующая


Попытка использования инструмента gacutil, который находится в директории FrameworkSDKNain, для регистрации “отсроченного” модуля приведет к слелующему сообщению об ошибке:

Microsoft (R) .NET Global Assembly Cache Utility. Version 1.0.2914.16 Copyright (C) Microsoft Corp. 1998-2001. All rights reserved,

Failure adding assembly to the cache: Strong name signature could not be verified.

(Неудача при попытке включить модуль в кэш: Невозможно проверить правильность сигнатуры строгого нменн.)

Was the assembly built delay-signed?

(He является ли построенный модуль “отсроченным”?)

К этому моменту данный модуль является только частично помеченным, а по умолчанию GAC принимает только те модули, у которых имеется полное строгое имя. Однако можно настроить GAC таким образом, что он не будет использовать утилиту sn для проверки правильности строгих имен для “отсроченных" модулей. Помните маркер общего ключа, о котором мы упоминали ранее? Именно здесь он начинает использоваться.

sn -Vr*,34AAA4146EE01E4A

Эта инструкция разрешает GAC регистрировать все модули, обладающие маркером общего ключа, равным 34ААА4146ЕЕ01Е4А. Еслн вы наберете это в командной строке, то получите следующее сообщение:

Microsoft (R) .NET Framework Strong Name Utility. Version 1.0.2914.16 Copyright (C) Microsoft Corp. 1998-2001. All rights reserved.

Verification entry added for assembly “.34AAA4146EE01E4A’

(Проверка правильности вхождения, включенного в модуль ‘*,34ААА4146ЕЕ01Е4А1)

Теперь попытка инсталлировать молуль в GAC увенчается успехом. Не требуется использовать значение общего ключа при добавлении контрольного вхождения в модуль — можно задать, чтобы все модули были зарегистрированы при использовании следующей строки:

sn —Vr *

Либо можно однозначно определить молуль, введя его полное нмя: sn —Vr DelaySign.dll

Такая информация постоянно хранится в так называемой ‘Verification Skip Table' (проверочной таблице), которая представляет собой некий файл на диске. Для того чтобы получить список вхождений, хранящихся в этой таблице, необходимо набрать следующее:
630

Глава 22

Все эти команды чувствительны к регистру. Вот каким будет выходной поток:

Microsoft (R) .NET Framework Strong Name Utility. Version 1.0.2914.16 Copyright (C) Microsoft Corp. 1998-2001. All rights reserved.

Модуль/Строгое имя

Пользователи

*,03689116d3a4ae33 \33aea4d316916803

¦.34AAA4146EE01E4A

*,631223CD18E5C371

*,b03f5f7f11d50a3a

\Ь77а5с561934е089

Все пользователи Все пользователи

Все пользователи Все пользователи Все пользователи Все пользователи

Обратите внимание на столбец Пользователи — здесь можно определить, чтобы данный модуль загружался в GAC только конкретными пользователями. Дополнительная информация, а также другие возможности при именованнл модулей МОГуТ быть ПОЛучеНЫ ИЗ Документации ПО sn.exe.

Завершение строгого имени

Последним этапом процесса является включение общего и частного ключей в модуль с последующей компиляцией. Про модуль с обоими ключами, говорят, что он обладает строгим именем; такой модуль может быть зарегистрирован в GAC без необходимости обходить проверку правильности. Для этого следует воспользоваться утилитой эп.ехе, на этот раз — с переключателем -R. Наличие переключателя -R означает, что мы хотим заново пометить модуль и добавить новую составную часть в частный ключ:

sn -R delayslgn.dll Company.Key В результате будет получено следующее:

Microsoft (R) .NET Framework Strong Name Utility, Version 1.0.2914.16

Copyright (C) Microsoft Corp. 1998-2001. All rights reserved.

Assembly 'delaysign.dll’ successfully re-signed

(Модуль ‘delaysign.dll’ помечен заново.)

В качестве остальных параметров используются имя модуля, которое необходимо заново пометить, и файл, где содержатся частный и общий ключи.

Нестандартные атрибуты

В первой половине главы мы сосредоточились на некоторых атрибутах, которые входят в состав .NET Framework. Но это еще не все — можно создавать свои собственные атрибуты.

В этой главе мы только обрисуем в общих чертах те возможности, которые таят в себе нестандартные атрибуты. В этом разделе мы познакомимся с разрабатываемыми атрибутами:

? TestcaaeAttribuce позволяет привязать код, в котором осуществляется тестирование некоторого класса, к самому классу

? BugrixAtcribuee позволяет сохранять информацию о том, кто изменял что-либо в исходном коде и когда это делалось

? DacabaaeTableActribute демонстрирует, как можно создавать схему базы данных нз классов .NET.
Атрибуты

631

Нестандартный атрибут — это просто специальный класс, который должен удовлетворять следующим двум требованиям:

? Атрибут должен быть производным от System.Attribute

? Конструктор(ы) атрибута может содержать в себе только типы, которые могут быть найдены в процессе компиляции, например, string и integer

Эти ограничения, налагаемые на типы, которые могут содержаться в конструкторе (конструкторах) атрибута, возникают вследствие способа, используемого для хранения атрибутов в метаданных модуля. Когда вы применяете атрибут внутри некоторой программы, то вы, фактически, используете конструктор атрибута. Например:
Предыдущая << 1 .. 289 290 291 292 293 294 < 295 > 296 297 298 299 300 301 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.