В чем разница в разборке двух исполняемых файлов .NET построен из одного и того же исходного кода?

Настройка:

  • один и тот же исходный код используется для построения исполняемого файла .NET 4 (консольного приложения) на двух разных машинах.
  • Microsoft Visual Studio 2010 SP1. Настройки .NET 4 идентичны на двух машинах.
  • ildasm projectName.exe /out:test.txt выполняется на .exe с обеих машин.
  • Вывод ildasm отличается от ожидаемых различий (mvid, privateimplementationdetails).

Вопрос:
Я потратил некоторое время на создание приложения для получения CRC исполняемого файла .NET и мне удалось игнорировать все различные данные времени сборки.

Я удаляю все данные выше // =============== ДЕКЛАРАЦИЯ ЧЛЕНОВ КЛАССА ================= == в выводе ildasm.exe. Это игнорирует MVID. Я создаю .exe без отладочной информации. И, наконец, я анализирую вывод для {GUID} и игнорирую их.

Затем я проверяю CRC оставшегося текстового файла.

CRC одинаковы, когда один и тот же проект создается на одном компьютере, но различаются, когда один и тот же проект построен на другом компьютере с идентичным исходным кодом и настройками MSVS 2010.

Кто-нибудь знает о какой-либо машинно-зависимой информации, хранящейся в сборке исполняемого файла .NET?

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

         `class DSC_PI.MainWindow/'<>c__DisplayClass21' V_2,`
         `class DSC_PI.MainWindow/'<>c__DisplayClass10' V_2,`  

         `class DSC_PI.MainWindow/'<>c__DisplayClass1e' V_3,`
         `class DSC_PI.MainWindow/'<>c__DisplayClassd' V_3,`  

Любое понимание было бы очень признательно.

13
задан Kara 21 June 2013 в 21:12
поделиться