从生产代码中查找修订信息,允许链接到源代码

时间:2010-09-08 16:32:17

标签: c# java svn

在Java中,我们可以声明一个值为$ HeadURL:$的静态字符串,该字符串由每个Subversion提交更新。然后可以将其从生成的类文件中提取到查找与类文件对应的源文件(和修订信息)。

在C中,我们可以声明一个静态char []来做同样的事情。

在C#中实现此目标的推荐方法是什么?

基本上,我正在寻找使用$ HeadURL:$信息的最佳做法,这些信息已由Subversion更新,以使生产代码与源代码相匹配。

我熟悉汇编版本等,但这并没有为我们提供我们正在寻找的粒度。

3 个答案:

答案 0 :(得分:1)

使用subversion,您可以使用svn info获取当前存储库的最新版本号,存储库URL,上次更改日期等。然后,您可以使用用于创建它的任何构建工具将该信息标记到程序集中。

例如,Nant中的asminfo任务创建了一个AssemblyInfo,您可以使用任意版本信息(属性元素)进行标记。

答案 1 :(得分:1)

如果我理解正确的话,你就是在尝试按每个源文件执行此操作,这只会让你自己变得困难:)如果你在构建之前标记,那么与之相关的修订号标记是对可执行文件中使用的每个源文件的明确引用,并为您提供精确的粒度。

您可以使用SVN的Revision关键字代替HeadURL来包含修订号。您只需要在每个EXE / DLL的一个源文件中包含此修订号(通常在传递给AssemblyInfo.cs中相应版本相关属性的字符串值中),这是@ serg10是什么指的是。

在C#中执行此每个文件是(不必要的)痛苦,因为该语言没有“模块”级别数据的概念。在每个文件中为至少一种类型添加属性是单调乏味的,容易被遗忘或输入错误。

答案 2 :(得分:0)

一些想法:

在多个源文件中声明类时,有点麻烦,例如偏班? :)

自定义属性的好处是不会侵入常规编程模型,智能感知等,同时仍然可以通过Type.GetCustomAttributes中的类型反射以编程方式发现。 (http://msdn.microsoft.com/en-us/library/kff8s254.aspx