Определите, используются ли блоки GAC'ed & NGen'ed

Как я определяю, используются ли Собственные изображения без Загрузчика verifing подпись блока во времени выполнения, или даже использующей блок GAC'ed?

У меня есть сложная система, что мы экспериментируем с NGen, но в настоящее время мы выполняем exe от папки, где весь DLL расположен из-за большого количества зависимостей от позднего связывания, смотря на Проводник Процесса, похоже, что Собственные изображения используются, но как я могу быть уверен, что извлекаю всю пользу и устраняю шаг Проверки Загрузчика?

С наилучшими пожеланиями, Graeme.

Обновление: я получаю много этого вида вещи из Средства просмотра журнала Привязки сборки:

LOG: [Level 1]Start validating IL dependency MyCompany.Entities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7cd8595f4671c5dd.
LOG: Dependency evaluation succeeded.

и в конце

LOG: Validation of dependencies succeeded.
LOG: Start loading all the dependencies into load context.
LOG: Loading of dependencies succeeded.
LOG: Bind to native image succeeded.
Native image has correct version information.
Attempting to use native image C:\Windows\assembly\NativeImages_v2.0.50727_32\MyCompany.Mylibrary#\4710bb8309419d707681bd360088181f\MyCompany.MyLibrary.MyClass.ni.dll.
ZAP: Native image has been relocated.
Native image successfully used.

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

ngen install "MyCompany.Entites, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7cd8595f4671c5dd, processorArchitecture=MSIL"

Сноска: Это обвиняет, кажется, подразумевает, что, если блоки не загружаются из GAC затем, процесс проверки сместит преимущества NGen? CLR Наизнанку - Улучшение Производительности Запуска Приложения (MSDN)

Обновление - Как Nobugz указало в комментарии ниже, упомянутый выше шаг проверки не выполняется начиная с 3.5 документов SP1 see:MSDN о NGen

12
задан Dog Ears 18 February 2010 в 13:30
поделиться

2 ответа

Обычно это то, для чего вы бы использовали дикт, а вовсе не класс.

-121--1466773-

Можно открыть глобальный параметр (User! Language), который отражает язык пользователя.

Затем вы можете использовать google translateapi для преобразования слов на английском языке в ваш язык.

Вот отличная статья: http://mscrm4u.blogspot.com/2008/06/multi-lingual-ssrs-reports.html

-121--3294758-

Вы легко можете увидеть его с помощью инструмента Fuslogvw.exe. Запустите его из командной строки Visual Studio. Настройте его с помощью Категории журнала = Собственные образы, Параметры + Журнал всех привязок к диску. Запустите программу. Вернитесь к fuslogvw, Refresh. Появится список всех загруженных сборок.

Дважды щелкните запись, чтобы увидеть, как была загружена сборка. Если он получен из GAC, вы увидите:

LOG: IL сборка загружена из C :\Windows\assembly\GAC _ MSIL\blahblah

Если образы Ngen-ed были использованы, вы увидите:

LOG: Привязка к нативному образу выполнена успешно.

12
ответ дан 2 December 2019 в 20:17
поделиться

Вы можете довольно легко увидеть, пришла ли сборка из GAC:

Assembly assembly = Assembly.GetExecutingAssembly();

if (assembly.GlobalAssemblyCache)
{
    Console.WriteLine("I'm in the GAC!");
}

РЕДАКТИРОВАТЬ: нашел способ ...

Чтобы узнать, является ли она NGEN'd, вы должны прочитать сборку напрямую и увидеть если поле заголовка предварительной компиляции содержит данные, соответствующие этой странице . Я немного устарел, чтобы добраться до этого значения, но это должно сработать. Я не вижу способа понять это с помощью методов отражения.

3
ответ дан 2 December 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: