C# 如何在Visual Studio中配置内部版本号以启用dll比较

C# 如何在Visual Studio中配置内部版本号以启用dll比较,c#,visual-studio,version-control,dll,C#,Visual Studio,Version Control,Dll,我正在Visual Studio 2008中构建一个具有多个项目和项目依赖关系的C#解决方案。我正在寻找一种仅在构建项目的代码更改时更改dll版本号的方法我当前使用它将本地生成的版本与生产文件系统进行比较。目标是只部署更新的DLL。我使用的是自动递增版本号,每次打开VisualStudio并进行构建时,所有dll版本号都会递增。完整解决方案重建以及其他开发人员执行生成并尝试部署时也是如此。有没有办法将Visual Studio配置为仅根据更改的文件内容增加生成编号?是否有外接程序可以执行此操作?


我正在Visual Studio 2008中构建一个具有多个项目和项目依赖关系的C#解决方案。
我正在寻找一种仅在构建项目的代码更改时更改dll版本号的方法

我当前使用它将本地生成的版本与生产文件系统进行比较。目标是只部署更新的DLL。我使用的是自动递增版本号,每次打开VisualStudio并进行构建时,所有dll版本号都会递增。完整解决方案重建以及其他开发人员执行生成并尝试部署时也是如此。

有没有办法将Visual Studio配置为仅根据更改的文件内容增加生成编号?是否有外接程序可以执行此操作?

由于DLL中的版本号不同,这些文件的二进制比较似乎也会失败。有没有人知道一个更好的工具只比较DLL的内容?

提前谢谢。

这并不是你想要的,但我发现这对处理大型解决方案很有帮助:。根据其文档,它检测您感兴趣的更改: 如果有一个文件具有较新的时间戳(这意味着源代码在上一次版本更改后已被修改),则该项目将被标记为版本更新


建议的、可支持的解决方案是,您的项目不使用VisualStudio方式自动增加版本号。然后您需要手动或编写预构建脚本/MS构建任务来执行增量。

这里有一个有趣的示例,您应该查看它。。。它涉及一个预生成任务,该任务根据一年中的某一天更新生成编号

我建议您研究版本控制系统提供的选项,以便将版本信息嵌入源文件中。在过去,我在自动增值方面遇到了很多问题,我向自己保证再也不会出现这种情况。现在,我更喜欢一些比构建编号更具体的东西,并将唯一标识符嵌入到构建系统的每个产品中


我用英语描述了我自己的系统。虽然我的解决方案可能不适合你,但在回答我的问题时,还有其他有趣的选择,因此我拒绝的一些解决方案可能对你有用,即使您必须使它们适应您所使用的任何VCS。

一个选项是转向持续集成解决方案,这样可以在签入到源代码管理系统时触发构建

关于程序集版本控制,我通常会创建一个链接到每个项目的SolutionVersion.cs(替换默认程序集版本cs)(使用添加现有项,但更改按钮以添加为链接)

然后,我使用NAnt或MSBuild任务获取巡航控制生成标签号,并在生成解决方案之前覆盖SolutionVersion.cs verison号


这样,我可以通过CruiseControl构建版本获取程序集并将其追溯到代码(更好的是,我通常让CC.net在源代码管理中使用相同的编号标记源代码)

+1 for ccnet。对于程序集版本,我们使用subversion版本号。对于安装程序,我们有需要强制生成的ccnet项目,因此安装程序的版本是基于ccnet生成号的。您是对的,让生成服务器这样做是最好的选择。链接的版本文件大部分都在那里,但是如果您使用的是内部版本号,则每个dll版本都会随着每个内部版本而改变。在大多数情况下,使用源代码管理的版本号似乎更复杂,然后在特定项目中使用仅文件的最新版本号则更复杂。我放弃了仅部分部署更新DLL的要求,从新版本部署所有DLL是可以的,所有版本都将根据版本号更新版本号。是我现在选择的构建服务器,也可能是你的。