2009-03-04 50 views
13

我有一个用c#编写的VS2008项目,带有许多程序集。我想要一个简单的方法来管理所有不同程序集之间的版本号,并且可以自动增加内部版本号并将其保存到每个程序集的版本号中。VS2008中的自动组装版本号管理

我猜这是大多数项目的问题,因此大概它已经被解决了吗?

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

回答

17

我使用由其中包含以下行的解决方案的所有项目连接解决方​​案级别一个cs文件:

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

而且一定要请从集信息文件AssemblyFileVersion属性在您的项目。

+0

它看起来不像是在VB上工作,还是因为VS.NET的Express版本?看起来很棒。 – 2009-03-04 13:05:37

+0

您还需要添加使用。我会ad答我的答案。 – 2009-03-04 13:17:33

0

你可以写一个自定义的MSBuild任务来做到这一点。看看this approach

10

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

然后在每个项目链接通过选择添加现有项目到每个项目,而不是点击添加,使用下拉添加为链接。

0

你可以在你的AssemblyInfo.cs使用星号:

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

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

3

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

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

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

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

0

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

1

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

上这只是一个评论,自动生成的版本号周期。因此,如果您希望能够编译版本,以便昨天版本具有版本1.2.3.X,那么今天编译X <然后这不是要走的路。

为了实现这一目标使用

​​

这将让你的版本1.2.X.Y其中大的今天比昨天是X.Y的组合。我猜X.Y分别是日期和时间的函数