как сравнить DLL файлы - PullRequest
       44

как сравнить DLL файлы

2 голосов
/ 09 апреля 2010

У меня есть сценарий после сборки после сборки моего проекта на c #, который поместит один из файлов dll в определенный каталог. Эта DLL сохраняется в SVN. У меня вопрос, есть ли способ, что при создании моего проекта, он знает, что эта DLL не изменилась и будет знать, что не будет скопирована в каталог, чтобы не было измененной копии для SVN?

Ответы [ 6 ]

1 голос
/ 09 апреля 2010

Почему вы помещаете dll, которые вы встраиваете в SVN?

EDIT

Вы должны найти лучший способ сделать это - например, иметь установщик или FTP-сервер, где разработчики могут получить ваши DLL. Это действительно плохая идея поместить ваши производные работы в SVN. Действительно плохо.

0 голосов
/ 16 апреля 2010

Можно проверить двоичные файлы в Subversion. Причина этого заключается в том, что нижестоящий пользователь (QA или пользователь) может не иметь среды для сборки из исходного кода. Они также не заинтересованы в сборке из исходного кода.

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

Метка времени не является надежным методом.

Для этого вам нужно что-то в управлении зданием. В моем проекте наш строительный скрипт находит максимальное количество ревизий задействованных файлов (обратите внимание, что это не текущий номер ревизии, так как вы должны быть в состоянии построить в будущем, но получите те же результаты). Затем он ставит этот номер на ресурс версии DLL. После того, как мы удовлетворены результатом, мы выпускаем его, вручную копируя двоичный файл в папку в Subversion и регистрируясь.

Если QA находит ошибку, мы всегда можем вернуться к состоянию, в котором построена DLL (путем поиска номера версии) и найти, где проблема.

0 голосов
/ 10 апреля 2010

Попробуйте все равно зафиксировать и посмотреть, согласен ли SVN с вашим графическим интерфейсом.

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

0 голосов
/ 09 апреля 2010

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

0 голосов
/ 09 апреля 2010

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

Edit: В ответ Тиму вы пояснили, что делаете это, чтобы избавить других разработчиков от необходимости строить. Это неправильный способ сделать это. Контроль источника не должен использоваться для хранения двоичных файлов, которые выводятся из источника. Вместо этого вы должны:

  1. получите непрерывную интеграцию, работающую на вашем дереве
  2. отправить все выходные данные из 1. в общую папку
  3. скажите всем разработчикам, чтобы они смотрели этот ресурс, если они не хотят что-то создавать
0 голосов
/ 09 апреля 2010

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

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

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