2010-09-08 32 views
0

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

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

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

基本上,我在寻找使用$ HeadURL:$信息的最佳实践,该信息已被Subversion更新,以便将生产代码与源代码进行匹配。

我熟悉程序集版本之类的东西,但是这并不能提供我们要查找的粒度。

+0

为什么不使用源代码管理版本号来标记程序集版本?这是否达不到相同的目标? – serg10 2010-09-09 17:16:54

+0

@serg好点!任何想法如何在没有构建机器的情况下需要这个?如果是这样,请在回答部分提供回复。 – 2010-09-09 18:19:29

回答

1

如果我理解正确的话,你要做到这一点每个源文件,它只是使事情很难为自己:)如果你进行标记建立之前,则与标签相关联的版本号是明确指出可执行文件中使用的每个源文件,并为您提供精确的粒度。

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

在C#中这样做每个文件是(不必要的)痛苦,因为语言没有“模块”级数据的概念。并且在每个文件中至少添加一个属性是很繁琐的,并且容易被遗忘或错误输入。

+0

Yeah同意,归因与第一位的标题没有任何区别,都需要1)勤奋的程序员或2)体面的模板。 – stephbu 2010-09-13 16:46:47

0

的几点思考:

当一个类在多个源文件中声明时会有点混乱部分课堂? :)

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

+0

部分班是我最关心的问题。任何想法如何处理? – 2010-09-08 17:41:35

+0

除了生成更复杂的代码和逻辑之外,没有*好的想法。部分类真的是一个大问题吗?几乎所有我见过的实例都是用用户贡献方面生成的工具。在用户编辑的房屋中有属性将是正确的行为。 – stephbu 2010-09-08 18:06:11

1

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

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