Почему другой dll производится после чистой сборки без изменений кода?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

15
задан MatthewMartin 11 March 2016 в 21:22
поделиться

3 ответа

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

Некоторые столбцы Ecma-335 Partition II (CLI Specification Metadata Definition), которые могут измениться на сборку, даже если исходный код не изменяется вообще:

  • Модуль. Mvid: сгенерированный временем изготовления GUID. Всегда изменения, каждая сборка.
  • AssemblyRef. HashValue: Мог измениться, если Вы ссылаетесь на другой блок, который был также восстановлен начиная со старой сборки.

, Если бы это действительно, действительно беспокойства Вы, моя лучшая подсказка относительно обнаружения точно, что изменяется, были бы к разности фактическими таблицами метаданных. Способ получить их состоит в том, чтобы использовать окно ildasm MetaInfo:

View > MetaInfo > Raw:Header,Schema,Rows // important, otherwise you get very basic info from the next step

View > MetaInfo > Show!
14
ответ дан 1 December 2019 в 03:15
поделиться

Я думаю, что это было бы полем TimeDateStamp в заголовке IMAGE_FILE_HEADER спецификации .

PE32
10
ответ дан 1 December 2019 в 03:15
поделиться

Мог быть то, что сборка или числа пересмотра изменились.

-1
ответ дан 1 December 2019 в 03:15
поделиться