Настройка:
- используется один и тот же исходный код. Создайте исполняемый файл .NET 4 (консольное приложение) на двух разных машинах.
- Настройки Microsoft Visual Studio 2010 SP1.NET 4 идентичны на двух машинах.
-
ildasm projectName.exe /out:test.txt
выполняется на .exe с обеих машин. - Выход ildasm отличается от ожидаемых различий (mvid, privateimplementationdetails).
Вопрос:
Я потратил некоторое время на создание приложения для получения CRC исполняемого файла .NET и преуспел в игнорировании всех разных данных времени сборки.
Я удаляю все данные выше строки // =============== CLASS MEMBERS DECLARATION ===================
в выход ildasm.exe. Это игнорирует MVID. Я создаю .exe без отладочной информации. И, наконец, я разбираю вывод для <PrivateImplementationDetails>{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,`
Любое понимание было бы очень оценено.