整容说文库 > 程序代码 > 教育资讯

如何自定义C#工程版本号格式?

来源:学生作业帮助网 编辑:整容说文库 时间:2021/03/08 17:50:33 程序代码
如何自定义C#工程版本号格式?程序代码
version c#
[assembly: AssemblyVersion("1.0.0.*")]

当前是通过这种方式使用的,但是有了新需求,需要定义格式为“version.month.day.number ” 
如当前日期为14-July-2015 15:05,则版本号为:1.7.14.1505
先多谢各位大神了~~
直接写死
[assembly: AssemblyVersion("1.7.14.1505")]呗

你设置了自动,那么它本身就包含了年月日的信息了
问题你必须用程序读取然后解析一下才能得到这个信息

从文件上直接看版本号是看不懂的
项目,右键属性,应用程序,程序集信息
http://bbs.csdn.net/topics/220006445
引用 1 楼 Z65443344 的回复:
直接写死
[assembly: AssemblyVersion("1.7.14.1505")]呗

你设置了自动,那么它本身就包含了年月日的信息了
问题你必须用程序读取然后解析一下才能得到这个信息

从文件上直接看版本号是看不懂的
您好,谢谢您的回复。需要每次编译把当前的时间信息保存到版本号里的。您下面说的我没太看明白。
引用 2 楼 hbu_pig 的回复:
项目,右键属性,应用程序,程序集信息
您好,我看到这个设置了。但是我想把编译的时间信息加进去,怎么加啊?
可以用Text Template自动生成


<#
  DateTime today = DateTime.Today;
  Version ver = new Version(1, today.Month, today.Day, today.Minute  + today.Hour * 100);
#>
[assembly: AssemblyVersion("<#= ver #>")]

引用 3 楼 duanzi_peng 的回复:
http://bbs.csdn.net/topics/220006445
您好,整个帖子我都看了,还是没明白具体怎么做,能指点一二吗?
引用 6 楼 effun 的回复:
可以用Text Template自动生成


<#
  DateTime today = DateTime.Today;
  Version ver = new Version(1, today.Month, today.Day, today.Minute  + today.Hour * 100);
#>
[assembly: AssemblyVersion("<#= ver #>")]
您好!看起来很酷的样子,这个代码要加在哪里啊?
Text Template实际上是一个设计时的代码生成工具,很实用,用法就有点象ASP.NET页面的写法。

1、给工程添加一个Text Template文件,注意扩展名是tt。
2、新创建的文件已经有一些默认的设置,找到最后一行,把extension=".txt"改为extension=".cs"。
3、然后就可以开始写你要的代码了。

下面的完整的代码示范,已经测试过可用。


<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>

<#
  DateTime now = DateTime.Now;
  Version ver = new Version(1, now.Month, now.Day, now.Hour * 100 + now.Minute );
#>

[assembly: System.Reflection.AssemblyVersion("<#= ver #>")]
tt文件编辑好以后,只要一保存就能够自动生成一个文件,以后你如果要更新版本号,要只打开tt文件点击一下保存就可以了,或者直接在解决方案管理器里找到tt文件,然后右键运行自定义工具。

对了,还有一点忘说了,上面的代码生成后,记得把原来AssemblyInfo.cs文件里的AssemblyVersion那行删除掉。
引用 10 楼 effun 的回复:
tt文件编辑好以后,只要一保存就能够自动生成一个文件,以后你如果要更新版本号,要只打开tt文件点击一下保存就可以了,或者直接在解决方案管理器里找到tt文件,然后右键运行自定义工具。

对了,还有一点忘说了,上面的代码生成后,记得把原来AssemblyInfo.cs文件里的AssemblyVersion那行删除掉。
您的这种方法实际是手动生成一个版本号,不是通过捕获编译的动作或者行为生成的,可以这样理解吗?
http://www.cnblogs.com/skyivben/archive/2010/12/18/1910180.html
我是通过这种方法实现的。
引用 11 楼 roony 的回复:
Quote: 引用 10 楼 effun 的回复:

tt文件编辑好以后,只要一保存就能够自动生成一个文件,以后你如果要更新版本号,要只打开tt文件点击一下保存就可以了,或者直接在解决方案管理器里找到tt文件,然后右键运行自定义工具。

对了,还有一点忘说了,上面的代码生成后,记得把原来AssemblyInfo.cs文件里的AssemblyVersion那行删除掉。
您的这种方法实际是手动生成一个版本号,不是通过捕获编译的动作或者行为生成的,可以这样理解吗?


确实是的,生成的版本号是静态的,只有手动运行了才能生成新的版本号,按我的理解,一般情况下只有需要发布的时候才需要生成一个新的版本号,所以静态的也够用了。如果想让他在每一次编译的时候自动生成,可以利用编译事件,在编译以前调用T4模板转换器来生成。这方面我没有经验,参考下面的这个方法:
http://stackoverflow.com/questions/1646580/get-visual-studio-to-run-a-t4-template-on-every-build
引用 13 楼 effun 的回复:
Quote: 引用 11 楼 roony 的回复:

Quote: 引用 10 楼 effun 的回复:

tt文件编辑好以后,只要一保存就能够自动生成一个文件,以后你如果要更新版本号,要只打开tt文件点击一下保存就可以了,或者直接在解决方案管理器里找到tt文件,然后右键运行自定义工具。

对了,还有一点忘说了,上面的代码生成后,记得把原来AssemblyInfo.cs文件里的AssemblyVersion那行删除掉。
您的这种方法实际是手动生成一个版本号,不是通过捕获编译的动作或者行为生成的,可以这样理解吗?


确实是的,生成的版本号是静态的,只有手动运行了才能生成新的版本号,按我的理解,一般情况下只有需要发布的时候才需要生成一个新的版本号,所以静态的也够用了。如果想让他在每一次编译的时候自动生成,可以利用编译事件,在编译以前调用T4模板转换器来生成。这方面我没有经验,参考下面的这个方法:
http://stackoverflow.com/questions/1646580/get-visual-studio-to-run-a-t4-template-on-every-build
好的,了解了,多谢您的耐心回复,再次感谢~
程序代码