Проверьте, не изменился ли скомпилированный dll? - PullRequest
3 голосов
/ 29 апреля 2011

Мы пытаемся выяснить, отличается ли dll на компьютере пользователя от сервера развертывания.Мы не можем использовать временную метку, потому что наш скрипт сборки строит все каждый раз (и именно так мы хотим сохранить ее).Мы также предпочитаем не использовать версию #, потому что мы определенно можем видеть, что люди часто забывают об этом.Некоторые из наших dll меняются все время (по крайней мере, пару раз в неделю).Я пытался создать XML-файл с хешем MD5 каждого файла, но, очевидно, это не сработает, потому что хеш меняется каждый раз, когда мы его компилируем, даже если изменений не было.Есть ли другой способ?

Ответы [ 3 ]

1 голос
/ 13 марта 2014

Меня недавно попросили выполнить аналогичную задачу, и я использовал Reflector Diff AddIn .

0 голосов
/ 30 апреля 2011

Возможно, у вас есть инкрементный номер сборки, который включается в некоторую строку версии вашей dll.Вы пытались сделать diff на ваших dll?В этом случае вы можете «замаскировать» строку версии на лету для вычисления вашего хеша md5.

0 голосов
/ 29 апреля 2011

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

Теоретически, возможно, возможно использовать рефлексию или ildasm и некоторое умное сравнение результатов, но это будет намного сложнее, чем пересмотр вашего процесса для использования приращения строк версий.

Я предлагаю вам автоматизировать процесс сборки и автоматически увеличивать строку версии в файле Assemblyinfo.cs для каждой сборки. Если вы используете управление исходным кодом, ваш скрипт сборки может проверить его, увеличить его и вернуть обратно.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...