我在Visual Studio 2005中有一个.net 2.0 C#应用程序,我想自动生成正确的版本号,它应该包含一个允许我猜测应用程序构建日期的编号。
我尝试使用Microsoft的'AssemblyInfo Task'工具,但默认情况下此工具不起作用。对于今天,它将生成一个内部编号'090227',超过最大值65535,从而产生错误。
我还可以使用包含年份和年份的内部版本编号,例如2009年1月1日的09001 ...
你知道解决这个问题的方法吗?
我是否必须更新此'AssemblyInfo任务'的源代码,或者这可以在VS2008中实现吗?
谢谢你的帮助。
答案 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;
}
似乎是最简单的解决方案。