Я хочу, чтобы инструмент или метод могли ответить на вопрос «Какая версия файла X использовалась для сборки Assembly abc.dll?» Недавно я перешел в группу разработчиков .NET, и кажется, что этот вопрос возникает постоянно, в той или иной форме, и мы не совсем справились с этим. Кто-то скажет что-то вроде «Эй, ваш последний код на тестовом сервере?» и ответ неизбежно что-то вроде «я не знаю».
В давние времена разработки Unix (я здесь встречаюсь) система контроля версий SCCS имела специальные ключевые слова , такие как% I% (версия) и% M% (имя модуля) что вы можете поместить в свой файл, который будет заменен соответствующей информацией о версии SCCS при каждом извлечении файла. Таким образом, вы могли бы сделать изящную хитрость, присвоив константу «% I%% M%» в исходном файле, скомпилировать и затем выполнить команду Unix «strings» в полученной библиотеке, чтобы определить версии того, какие файлы использовались для создания этого файла.
Я выполнил быстрый тест для проверки себя в файле класса C #, например:
public const String VERSION_STRING = "*VERSION* = MyClass 1.0";
Затем запустил эту командную строку в моем каталоге DLL:
>for %f in (*.dll) do find "VERSION" %f
Но результаты были:
---------- MYASSEMBLY.DLL
VERSION_STRING
Это не совсем то, что было после того, как я (это дало мне имя константы, но никакой информации о версии, которую я пытался вставить в класс вручную).
Для чего бы то ни было, в настоящее время мы используем Clearcase для контроля версий (в настоящее время это стандарт компании). В Clearcase есть некоторые инструменты, которые могут помочь нам в этом (например, clearaudit ), но это потребует некоторых усилий для улучшения и переоборудования нашего процесса сборки. Я должен также упомянуть, что мы рассматриваем возможность перехода на Subversion. Поэтому я думаю, что решения, которые работают с .NET в любой из различных систем управления версиями или средах сборки (MSBuild, NAnt, CruiseControl), являются честной игрой.
Существуют ли другие, особенно ориентированные на .NET, решения для отслеживания того, какая версия какого файла вошла в какую сборку?