Как автоматически обнаруживать и освобождать DLL, которые действительно изменились? - PullRequest
3 голосов
/ 21 апреля 2009

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

Но наша система качества подразумевает, что каждый раз, когда публикуется новая DLL, соответствующие тесты проверки должны выполняться снова (часто вручную, и это занимает значительное количество времени.)

Итак, наша цель состоит в том, чтобы избежать выпуска DLL, которые не изменились на самом деле . Т.е.: наличие автоматической процедуры (сценария, инструмента, чего угодно ...), которая обнаруживает различные DLL-файлы, основываясь только на содержательной информации, которую они содержат (код и данные), игнорируя метки времени и контрольную сумму.

Есть ли хороший способ добиться этого?

Ответы [ 4 ]

1 голос
/ 21 апреля 2009

У нас та же проблема с нашей системой сборки. К сожалению, нетрудно обнаружить, есть ли какие-либо изменения кода материала, поскольку у нас есть множество статических библиотек, поэтому изменение одной из них может привести к изменению dll / exe. Изменения в файле, непосредственно используемом dll / exe, могут просто исправить плохой комментарий, а не изменить результирующий объектный код.

Ранее я искал инструмент для выполнения того, что вы хотели, и я не видел ни одного. Я думал сравнить два файла вручную и пропустить несущественные различия в двух версиях. Portable File Format хорошо документирован, поэтому я не ожидаю, что это будет очень сложно. Наши дополнительные требования требуют, чтобы мы игнорировали версию, помеченную в dll / exe, поскольку мы однозначно помечаем все наши файлы, а также игнорируем подпись при подписании всех наших исполняемых файлов.

Я еще не нашел время, чтобы сделать что-либо из этого, но мне было бы интересно сотрудничать с вами, если вы приступите к реализации решения. Если вы найдете инструмент, который это делает, сообщите нам.

1 голос
/ 21 апреля 2009

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

1 голос
/ 21 апреля 2009

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

1 голос
/ 21 апреля 2009

Основывайте его на информации о версии и обновляйте информацию о версии только тогда, когда вы действительно вносите изменения.

...