Найти информацию о ревизии в производственном коде, разрешающую ссылку на исходный код - PullRequest
0 голосов
/ 08 сентября 2010

В Java мы можем объявить статическую строку со значением $ HeadURL: $, которая обновляется каждым коммитом Subversion.Затем его можно извлечь из созданного файла класса, чтобы найти исходный файл, соответствующий файлу класса (и информации о редакции).

В C мы можем объявить статический символ [] длясделать то же самое.

Каков рекомендуемый способ достижения этой цели в C #?

По сути, я ищу лучшую практику использования $ HeadURL: $ information, которая была обновленапо Subversion, чтобы сопоставить производственный код с исходным кодом.

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

Ответы [ 3 ]

1 голос
/ 10 сентября 2010

С помощью subversion вы можете использовать svn info, чтобы получить номер последней редакции, URL-адрес хранилища, дату последнего изменения и т. Д. Текущего хранилища. Затем вы можете вставить эту информацию в свою сборку с помощью любого инструмента сборки, который вы используете для ее создания.

Например, задача asminfo в Nant создает AssemblyInfo, которую можно пометить произвольной информацией о версии (элементами атрибута).

1 голос
/ 13 сентября 2010

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

Вы можете включить номер редакции, используя ключевое слово Revision SVN вместо HeadURL. Вам нужно только включить этот номер ревизии в один исходный файл для каждого EXE / DLL (обычно в строковом значении, передаваемом соответствующему атрибуту, связанному с версией в AssemblyInfo.cs), о чем говорит @ serg10.

Выполнение этого файла на C # (излишне) болезненно, потому что язык не имеет понятия данных «модуля». А добавление атрибута хотя бы к одному типу в каждом файле утомительно и может быть забыто или опечатано.

0 голосов
/ 08 сентября 2010

Некоторые мысли:

  • Может использовать статический член в вашем классе, как C
  • Создать пользовательский атрибут для хранения данных и присоединить его к объявлению класса.Инструкции и пример здесь: http://msdn.microsoft.com/en-us/library/84c42s56.aspx

Становится немного запутанным, когда класс объявлен в более чем одном исходном файле, например, частичный класс?:)

Преимущество пользовательских атрибутов заключается в отсутствии вторжения в обычную модель программирования, intellisense и т. Д., При этом их можно обнаружить программным способом с помощью отражения типа в Type.GetCustomAttributes.(http://msdn.microsoft.com/en-us/library/kff8s254.aspx)

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