2010-03-09 71 views
5


我在Visual Studio 2008中构建了一个包含多个项目和项目依赖关系的C#解决方案。
我正在寻找一种方法来更改dll版本号只有当生成项目的代码更改。

我目前使用Beyond Compare将我的本地生成版本与生产文件系统进行比较。目标是仅部署更新的dll。我正在使用自动增量版本号,并且每次打开visual studio并进行构建时,所有dll版本号都会增加。完全解决方案重建以及不同开发人员构建并尝试部署时也是如此。

有没有一种方法可以将Visual Studio配置为仅基于更改的文件内容增加内部版本号?有没有添加会做到这一点?

似乎这些文件的二进制比较也会失败,因为dll中的版本号不同。有谁知道更好的工具只比较dll的内容?

在此先感谢。如何在Visual Studio中配置内部版本号以启用dll比较

回答

1

一种选择是转向持续集成解决方案,如Cruise Control .Net,这允许在签入源控制系统时触发构建。

关于集版本我通常做的是什么创造一个SolutionVersion.cs(替换默认的程序集版本CS)链接到每个项目(使用添加现有项目,但改变按钮添加为链接)

然后我用一个恶性或MSBuild任务采取巡航控制生成的标签数量和覆盖SolutionVersion.cs verison号之前解决方案被内置

这样我可以采取装配,并通过跟踪它回到代码CruiseControl构建版本(甚至更好,我通常会在源代码管理中使用相同的编号标记源代码)

+0

ccnet的+1。对于汇编版本,我们使用subversion版本号。对于安装程序,我们有需要强制构建的ccnet项目,因此安装程序基于ccnet内部版本号进行版本控制。 – Pedro 2010-05-25 14:58:25

+0

你说得对,建立服务器这样做是最好的选择。链接的版本文件可以在那里获得大部分内容,但如果您使用内部版本号,则每个版本都会随着每个版本而改变。在大多数情况下,使用来自源代码控制的rev数似乎更加复杂,然后在特定项目中使用最新rev数的唯一文件会更复杂。 – jaminto 2012-10-06 16:19:13

+0

我放弃了只更新dll的部分部署的要求,从新的构建部署所有dll都很好,并且所有dll都会根据内部版本号更新版本号。 http://www.jetbrains.com/teamcity/是我现在选择的构建服务器,也可能是你的。 – jaminto 2012-10-06 16:19:42

0

它不太符合你的要求,但我发现这对处理大型解决方案很有帮助:Versioning Controlled Build。根据其文档,它检测到您感兴趣的更改: “如果存在具有更新近时间戳的文件(这意味着源代码在先前版本更改后已被修改),则该项目将被标记为版本更新“。

推荐的,可支持的解决方案将用于您的项目不使用Visual Studio方式自动增加内部版本号。然后,您需要手动或编写预生成脚本/ MS生成任务来执行增量。

0

有这codeproject article一个有趣的样本,你应该看看......它涉及到一个预生成的任务,确实根据的一年中的天更新版本号的任务

0

我会建议您可以查看您的修订控制系统提供的选项,以将修订信息嵌入到源文件中。过去我对自动增量有足够的问题,我不会再次答应自己。现在我更喜欢比构建编号更具体的东西,并将独特的标识符嵌入构建系统的每个产品中。

我在Embedding mercurial revision information in Visual Studio c# projects automatically中描述了我自己的系统。尽管我的解决方案可能不适合您,但在回答我的问题时还提出了其他有趣的选项,因此,我拒绝的一些解决方案可能对您有用,即使您必须将它们适用于任何VCS使用。

相关问题