VS2005:如何使用日期自动生成内部版本号?

时间:2009-02-27 17:02:05

标签: c# .net msbuild build-process versioning

我在Visual Studio 2005中有一个.net 2.0 C#应用程序,我想自动生成正确的版本号,它应该包含一个允许我猜测应用程序构建日期的编号。
我尝试使用Microsoft的'AssemblyInfo Task'工具,但默认情况下此工具不起作用。对于今天,它将生成一个内部编号'090227',超过最大值65535,从而产生错误。

我还可以使用包含年份和年份的内部版本编号,例如2009年1月1日的09001 ...
你知道解决这个问题的方法吗?
我是否必须更新此'AssemblyInfo任务'的源代码,或者这可以在VS2008中实现吗?
谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

您需要查看msbuildtasks。它是一组开源的msbuild任务。该模块的任务是增加/修改/ etc构建号。它也非常易于使用且非常容易扩展。

答案 1 :(得分:2)

VS / C#/ msbuild生成的默认自动内部版本号是自1.1.2000以来的天数,版本号是自午夜以来的两秒增量数,因此您可以计算构建的日期和时间倒是这样:

new DateTime(2000, 1, 1).AddDays(assemblyName.Version.Build).AddSeconds(assemblyName.Version.Revision*2)

答案 2 :(得分:1)

msbuildtasks没有解决我的问题。如说明书中所述,我需要一种特殊的格式。 msbuildtasks的文档也很好......去找吧 我已经根据我的需要添加了一个新的增量类型'YearAndDay'来修改AssemblyInfo Task的源代码:

case IncrementMethod.YearAndDay:
{
    DateTime dDate = DateTime.Now;
    long buildNumber = dDate.Year % 2000 * 1000;
    buildNumber += dDate.DayOfYear;
    string newVersionNumber = buildNumber.ToString();
    Log.LogMessage(MessageImportance.Low, logMessage, newVersionNumber);
    return newVersionNumber;
}

似乎是最简单的解决方案。