我在Visual Studio 2008中构建了一个包含多个项目和项目依赖关系的C#解决方案。
我正在寻找一种方法来更改dll版本号只有当生成项目的代码更改。
我目前使用Beyond Compare将我的本地生成版本与生产文件系统进行比较。目标是仅部署更新的dll。我正在使用自动增量版本号,并且每次打开visual studio并进行构建时,所有dll版本号都会增加。完全解决方案重建以及不同开发人员构建并尝试部署时也是如此。
有没有一种方法可以将Visual Studio配置为仅基于更改的文件内容增加内部版本号?有没有添加会做到这一点?
似乎这些文件的二进制比较也会失败,因为dll中的版本号不同。有谁知道更好的工具只比较dll的内容?
在此先感谢。如何在Visual Studio中配置内部版本号以启用dll比较
回答
一种选择是转向持续集成解决方案,如Cruise Control .Net,这允许在签入源控制系统时触发构建。
关于集版本我通常做的是什么创造一个SolutionVersion.cs(替换默认的程序集版本CS)链接到每个项目(使用添加现有项目,但改变按钮添加为链接)
然后我用一个恶性或MSBuild任务采取巡航控制生成的标签数量和覆盖SolutionVersion.cs verison号之前解决方案被内置
这样我可以采取装配,并通过跟踪它回到代码CruiseControl构建版本(甚至更好,我通常会在源代码管理中使用相同的编号标记源代码)
它不太符合你的要求,但我发现这对处理大型解决方案很有帮助:Versioning Controlled Build。根据其文档,它检测到您感兴趣的更改: “如果存在具有更新近时间戳的文件(这意味着源代码在先前版本更改后已被修改),则该项目将被标记为版本更新“。
推荐的,可支持的解决方案将用于您的项目不使用Visual Studio方式自动增加内部版本号。然后,您需要手动或编写预生成脚本/ MS生成任务来执行增量。
有这codeproject article一个有趣的样本,你应该看看......它涉及到一个预生成的任务,确实根据的一年中的天更新版本号的任务
我会建议您可以查看您的修订控制系统提供的选项,以将修订信息嵌入到源文件中。过去我对自动增量有足够的问题,我不会再次答应自己。现在我更喜欢比构建编号更具体的东西,并将独特的标识符嵌入构建系统的每个产品中。
我在Embedding mercurial revision information in Visual Studio c# projects automatically中描述了我自己的系统。尽管我的解决方案可能不适合您,但在回答我的问题时还提出了其他有趣的选项,因此,我拒绝的一些解决方案可能对您有用,即使您必须将它们适用于任何VCS使用。
- 1. 如何配置Visual Studio以使用超越TFS GIT比较?
- 2. 在Visual Studio 2008中将内部版本号/内部版本号嵌入到项目中
- 3. 如何在Visual Studio中设置Subversion修订版本编号
- 4. 如何在Visual Studio中使用最新版本更新DLL
- 5. 如何在Visual C++ 2008中自动增加内部版本号?
- 6. 如何比较任意版本号?
- 7. 如何比较Ansible中的内核(或其他)版本号
- 8. 我可以更改默认的内部版本号在Visual Studio 2008
- 9. 使用较旧版本的MFC和较新版本的Visual Studio
- 10. DLL重定向 - 内部版本号不匹配
- 11. 使用PowerShell脚本替换DLL版本信息中的内部版本号
- 12. 如何比较版本号的字符串内?
- 13. ASP.Net版本号/内部版本号
- 14. 如何在Visual Studio 2015社区版中启用InstallShield限定版
- 15. 配置Visual Studio Team Services以部署WebJobs
- 16. 使Visual Studio不关心DLL版本
- 17. 如何配置visual studio 2017以使用外部difftool和mergetool
- 18. yum比较版本如何?
- 19. 在Visual Studio 2010中引用非GAC版本的DLL
- 20. 可以在Visual Studio Mac中使用DLL
- 21. 如果我用较新的visual studio版本打开了一个visual studio项目,我可以用较旧的visual studio版本再次打开它吗?
- 22. 在Visual Studio中自动包含文件名中的DLL版本号
- 23. 版本比较
- 24. 如何配置Visual Studio以在本地IIS上查看net.tcp URL?
- 25. 在Visual Studio中启用行号显示
- 26. Visual Studio 2010数据库版本模式比较目标是dbproj
- 27. Microsoft Git Provider和Visual Studio 2012未能启动已配置的比较工具
- 28. 引用dll时忽略内部版本号
- 29. 将'release'配置的当前内部版本号设置为'nightly build'配置?
- 30. iTunes Connect的内部版本号重置
ccnet的+1。对于汇编版本,我们使用subversion版本号。对于安装程序,我们有需要强制构建的ccnet项目,因此安装程序基于ccnet内部版本号进行版本控制。 – Pedro 2010-05-25 14:58:25
你说得对,建立服务器这样做是最好的选择。链接的版本文件可以在那里获得大部分内容,但如果您使用内部版本号,则每个版本都会随着每个版本而改变。在大多数情况下,使用来自源代码控制的rev数似乎更加复杂,然后在特定项目中使用最新rev数的唯一文件会更复杂。 – jaminto 2012-10-06 16:19:13
我放弃了只更新dll的部分部署的要求,从新的构建部署所有dll都很好,并且所有dll都会根据内部版本号更新版本号。 http://www.jetbrains.com/teamcity/是我现在选择的构建服务器,也可能是你的。 – jaminto 2012-10-06 16:19:42