开发记事本

生命中闪过了多少if...then...else...

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  57 Posts :: 2 Stories :: 278 Comments :: 10 Trackbacks
继续昨天的问题,今天在Google上找了一下,没有找到很好的方案。

目前找到的解决方案有以下几种:
1.使用一个地三方的 VS.Net 插件,实现在编译时 Build 号自动增加,文章是在 CSDN 上找到的,但是我在 GotDotNet 上没有找到这个插件;
2.使用 VS.Net 的宏,实现在编译时 Build 号自动增加;来源:http://blogs.biasecurities.com/jim/archive/2003/10/08/166.aspx

以上两种方法都要求在 VS.Net 的 IDE 中进行编译,无法用于 NAnt 的自动构建;

3.在 AssemblyInfo.cs 文件中设置[assembly: AssemblyVersion("1.0.*")],编译时“*”会被默认值(???不知道什么默认值,微软文档中说“星号 (*) 表示接受默认的内部版本号、修订号”)代替;
如果这种方法能够成功,那么应该是最理想的;但是这个方法在我这里失败,我试验的时候(非IDE,NAnt脚本构建),这个“*”的确会变,但是变化的毫无规律,上一次 Build 后文件的版本是1.0.1795.37140,再 Build 一次,版本号就变成了 1.0.1795.37192 了,再来一次,版本号是1.0.1795.38763,不知道是怎么变化的。

来源:http://www.devhood.com/messages/message_view-2.aspx?thread_id=99499http://dotnet247.com/247reference/msgs/50/250896.aspx

最不愿意采用的方法就是自己写一个程序,每次编译时读取AssemblyIfo.cs中的VersionNo,自动增加后回写。

总觉得 MS 在设计的时候应该考虑到了这个问题的吧?或许是一个 Unleased 的特性?
posted on 2004-11-30 21:35 NetCobra 阅读(2503) 评论(7)  编辑 收藏 所属分类: 开发心得

Feedback

#1楼  2004-12-01 11:34 小丹尼 [未注册用户]
最后一位是从2000年元旦开始的秒数
  回复  引用    

#2楼  2004-12-01 20:02 NetCobra      
是“从2000年元旦开始的秒数”?那对我来说可就毫无意义了。

微软为什么要做成这个样子的呢?
  回复  引用  查看    

#3楼  2004-12-02 13:13 shalala [未注册用户]
vs.net 2005就有这个功能了
  回复  引用    

#4楼  2004-12-02 16:42 NetCobra      
VS2005?等它出来黄花菜都凉了。

VS2003怎么办呢?
  回复  引用  查看    

#5楼  2005-02-13 21:22 zealic [未注册用户]
1.0.x.y

x代表.Net正式发布到现在(Build)的天数[好象是2000-02-01]
y代表你机器上的从今天0点到现在的毫秒数
  回复  引用    

#6楼  2005-06-06 17:31 catman [未注册用户]
不知道你找到好的办法没有,我这里也是这样,想自动增加 Build 号,那个 Build 号总是不变。
  回复  引用    

方法是:
Assembly thisAssembly = Assembly.GetExecutingAssembly();
string thisAssemblyVersion = thisAssembly.GetName().Version.ToString();

记得加:
using System.Reflection;
  回复  引用