Я хочу, чтобы инструмент или техника могли ответить на вопрос "Какая версия файла X использовалась для сборки Assembly abc.dll?" Недавно я перешел в группу разработчиков .NET, и кажется, что этот вопрос возникает все время, в той или иной форме, и мы не совсем с ним разбираемся. Кто-то скажет что-то вроде «Эй, твой последний код на тестовом сервере?» и ответ неизбежно что-то вроде «я не знаю».
В старые времена разработки Unix (здесь я встречаюсь с самим собой) система управления исходным кодом SCCS имела специальные ключевые слова, такие как %I% (версия) и %M% (имя модуля), которые вы можете поместить в свой файл, которые будут заменены соответствующими Информация о версии SCCS при извлечении файла. Так что ловкий трюк, который вы можете сделать, это присвоить постоянную строку «%I% %M%» в вашем исходном файле, скомпилировать, а затем запустить команду Unix "strings" в полученной библиотеке, чтобы определить, какие версии файлов использовались для создания этого файла.
Я сделал быстрый тест, чтобы свернуть свой собственный файл класса С#, например:
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). ), но это потребует некоторых усилий по совершенствованию и переоснащению нашего процесса сборки. Я также должен упомянуть, что мы рассматриваем возможность пилотного перехода на подрывную деятельность. Поэтому я думаю, что решения, которые работают с .NET в любой из различных систем контроля версий или сред сборки (MSBuild, NAnt, CruiseControl), являются справедливой игрой.
Существуют ли какие-либо другие, особенно ориентированные на .NET, решения для отслеживания того, какая версия какого файла вошла в какую сборку?