3

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

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

4

3 回答 3

3

您需要查看msbuildtasks。它是一组开源的 msbuild 任务。该模块的任务是增加/修改/等构建号。它也超级容易使用和超级容易扩展。

于 2009-02-27T17:08:29.247 回答
2

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

new DateTime(2000, 1, 1).AddDays(assemblyName.Version.Build).AddSeconds(assemblyName.Version.Revision*2)
于 2009-04-08T12:17:50.103 回答
1

msbuildtasks没有解决我的问题。正如描述中所解释的,我需要一种特殊的格式。msbuildtasks 的文档也很好……去找吧。
我已经修改了AssemblyInfo 任务的源代码,根据我的需要添加了一个新的增量类型“YearAndDay”:

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;
}

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

于 2009-03-04T09:26:46.273 回答