使用当前的日期/时间设置FileVersionInfo与CruiseControl.NET

问题描述:

设置标签我一直在寻找到以下几点:使用当前的日期/时间设置FileVersionInfo与CruiseControl.NET

  1. 利用现有的AssemblyInfo.cs文件改变的AssemblyFileVersion为当前日期和时间,即YYMM.DD.HH.MM
  2. 以中使用的日期和时间(1),并用它标记源代码(在SourceSafe中)

我已经成功地得到的MSBuild文件和CC整合,但我需要从MSBUILD文件中传出一个变量,然后我可以将其传递给CC任务,以便在构建完成时标记sourcesafe。

任何想法?

+0

要回答这些查询:我们的DLL标有我们手动定义的硬编码版本(例如1.2.0.1)。这是AssemblyInfo.cs文件中的Assembly版本,除非我们将开发的新版本发布到QA中,否则它不会更改。这些是公司程序,所以我不能真正改变它。 AssemblyFileVersion将由构建服务器YYMM.DD.HH.SS加时间戳。这将告诉我们DLL的编译时间,而不管内部版本号是否有用。我查看了AssemblyInfo任务,但它生成了AssemblyInfo文件 – Graham 2010-01-28 11:19:38

一个想法是让您的MSBuild创建一个环境变量与它的标记,然后它将在此项目的所有后续任务中可用。不过,我想知道为什么你会以这种格式使用日期时间,因为所有意图和目的的两个位置都已经有了日期。为什么不使用内部编号等有意义的标签,然后让MSBuild从状态文件中获取标签格式并使用它来更新Assembly信息。那么你的贴标机就会使用它。无需保留和转移。我说时间/日期的原因是无关紧要的,因为正常的流程会准备好告诉你日期/时间标签和exe是创建的。为什么做两次?

根据我的经验,CCNet通常会生成内部版本号(在您的情况下,基于当前日期和时间)。您需要在ccnet.config文件中使用Date Labeller

MSBuild Community Tasks Project中有一个AssemblyInfo任务。您可以指定目标AssemblyInfo.cs文件以及分配给哪些属性的值。

由CCNet生成的构建标签通过$(CCNetLabel)变量传递给MSBuild。当CCNet调用MSBuild时,这会自动完成,因此您可以在MSBuild文件中开始使用$(CCNetLabel)。这需要照顾上面的#1。

#2你要在你的ccnet.config文件您SourceControl块补充一点:

<applyLabel>True</applyLabel> 

这将导致该版本为Visual SourceSafe中的标签,如果你的构建成功应用。