VS2008中的自动装配版本号管理

时间:2009-03-04 12:55:14

标签: visual-studio-2008 assemblies

我有一个用c#编写的VS2008项目,其中包含许多程序集。我想有一个简单的方法来管理所有不同程序集之间的版本号,以及一种自动增加构建号的方法,并将其保存到每个程序集的版本号中。

我猜这是大多数项目的问题所以可能以前已经解决过了?

有关如何简化项目版本资源管理的任何建议吗?

7 个答案:

答案 0 :(得分:17)

我在解决方案级别使用.cs文件,该文件由解决方案中包含以下行的所有项目链接:

using System.Reflection;
[assembly : AssemblyVersion("1.2.3.*")]

请务必从项目中的AssemblyInfo文件中删除AssemblyFileVersion属性。

答案 1 :(得分:10)

将一个文件放入解决方案中,调用此“SolutionInfo.cs”(我假设C#,也可以在VB中工作)。在这里把你所有的属性放在一起。从AssemblyVersionAttribute开始。

然后在每个项目链接中选择“将现有项目添加到每个项目”,而不是单击“添加”,使用下拉列表添加为链接。

答案 2 :(得分:3)

我们在解决方案级别有一个AssemblyInfoGlobal.cs文件,就像其他答案一样。然后我们在构建脚本中添加一个小应用程序,它接受CruiseControl.net定义的CCNetLabel(并使用defaultLabeller生成标签)并检出全局文件,修改版本号,然后检查全局文件。

我们的一些项目有多个解决方案,因此全局文件位于目录结构中的解决方案级别之上,足够高,以便需要它的所有内容都低于它。

我们还会更新部署项目的版本号 - 这些版本号在VDProj文件中找到,但我不确定您是否会在快速版本中找到它们 - 我认为这是一个完整的Professional向上功能。有些项目有十几个部署项目,但没有简单的方法可以从VDPROJ文件本身外化版本号。 (或者在那里?)

然后构建发生意味着构建的所有输出具有完全相同的版本号,在任何时候我们都可以从MSI或程序集中获取版本,并且我们确切地知道用于构建该输出的源。< / p>

答案 3 :(得分:1)

  

using System.Reflection; [assembly : AssemblyVersion("1.2.3.*")]

对此进行评论,自动生成的版本号循环。因此,如果您希望版本能够使昨天的版本具有版本1.2.3.X,其中X&lt; X今天的构建然后这不是要走的路。

实现此目的

[assembly : AssemblyVersion("1.2.*")]

这将为您提供版本1.2.X.Y,其中X.Y的组合今天比昨天更大。我猜X.Y分别是日期和时间的函数

答案 4 :(得分:0)

您可以编写自定义MSBuild任务来执行此操作。看看this approach

答案 5 :(得分:0)

您可以在AssemblyInfo.cs中使用星号:

// Version information
[assembly: AssemblyVersion( "1.0.*" )]

它会自动增加您的版本号。在所有程序集之间共享一个数字......我不确定,但也许你在共享文件中使用了所提到的属性。

答案 6 :(得分:0)

我已经使用svnversion MSBuild community tasks 做了类似的事情,我按照说明here虽然我这样做的方式并不跨越多个程序集。