【发布软件】Visual Studio工具:自动递增版本号
来源:互联网 发布:怎样利用网络赚钱 编辑:程序博客网 时间:2024/05/22 11:53
前言
VS项目的版本号由四位数字组成,a.b.c.d。风格有两种:
- 主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ] ]
- 主版本号. 子版本号 [ 编译版本号 [. 修正版本号 ] ]
编译版本号在源代码编译时递增。
我采用的是第二种版本号风格,想要VS编译时自动递增这个号。于是我编写了IncBuildNo来完成这个任务。
IncBuildNo是个命令行工具,与VS配合即可完成递增版本号的任务。如果你采用第一种版本号风格,IncBuildNo也能很好地胜任。IncBuildNo甚至可以干别的递增数字的工作,不仅仅是版本号,因为运行它时需要的参数之一是正则表达式。
安装与运行
- 复制IncBuildNo.exe到你的硬盘,例如C:\windows\IncBuildNo.exe
- 在Visual Studio中打开任意一个项目或解决方案, 在菜单上选择 项目 - >XXX属性- >生成事件
- 在后期生成事件命令行中输入命令:
IncBuildNo.exe "$(PROJECTDIR)\Properties\AssemblyInfo.cs" "\[assembly: AssemblyVersion\(\"\d+\.\d+\.\d+\.(\d+)" 1
- 运行后期生成事件 选择 当生成更新项目输出时
按F6编译此项目,假如原来版本号是1.2.3.4,它会递增为1.2.3.5。
如果你跟我一样,采用第二种版本号风格,命令就是
- IncBuildNo "$(ProjectDir)Properties\AssemblyInfo.cs" "\[assembly: AssemblyVersion\(\"\d+\.\d+\.(\d+)" 1
IncBuildNo "$(ProjectDir)Properties\AssemblyInfo.cs" "\[assembly: AssemblyVersion\(\"\d+\.\d+\.(\d+)" 1
下载
http://incrbuildnum.codeplex.com/releases/view/79528
技术支持截至2012年6月28日。
文档
更多参数设定请参考http://incrbuildnum.codeplex.com/documentation。
FAQ
问1:如果一个解决方案包含多个项目,我修改了其中一个项目,其他的项目的版本号会递增吗?
答:设置好了就不会。(如何设置好请看问2)
问2:我的解决方案里只有一个项目,第一次编译后,我没有修改它,再按F6编译,此时版本号会递增吗?
答:会。但这不合逻辑,因为你没有修改项目,不应该重新编译,不应该启动IncBuildNo来递增版本号。但是如果不使用IncBuildNo,VS却不会重新编译。
原因在于IncBuildNo修改了AssemblyInfo.cs,后者是项目的一部分。所以,你可以把AssemblyInfo.cs排除在项目之外。这样,IncBuildNo仍然会递增AssemblyInfo.cs里的版本号,重复编译也不会重复递增了。
当你要发布发行版时,可以把AssemblyInfo.cs包括进项目,清除后期生成事件命令行,这样就把版本号编译进程序集里了。
问3:按照问2的回答,每次发布发行版都要清除后期生成事件命令行,太麻烦了,能不能简单点?
答:IncBuildNo有两个参数用来指定递增条件。你可以设置为DEBUG编译时递增,而RELEASE编译时不递增。详情见文档。
已知问题
- 此问题不是本程序的问题,而是采用FAQ问2的做法产生的问题:当你在VS2010里新建WPF自定义控件(CustomControl),VS会提示你“值不在预期的范围内”,但CustomControl1.cs却创建好了。如果你继续工作,运行后会发现CustomControl1没有应用上模板,显示的是空白一片。这是因为没有将AssemblyInfo.cs包括在项目内的缘故。更重要的是,没有
- [assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //主题特定资源词典所处位置
- //(在页面或应用程序资源词典中
- // 未找到某个资源的情况下使用)
- ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
- //(在页面、应用程序或任何主题特定资源词典中
- // 未找到某个资源的情况下使用)
- )]
[assembly: ThemeInfo( ResourceDictionaryLocation.None, //主题特定资源词典所处位置 //(在页面或应用程序资源词典中 // 未找到某个资源的情况下使用) ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 //(在页面、应用程序或任何主题特定资源词典中 // 未找到某个资源的情况下使用))]
。(你应该能在项目外的AssemblyInfo.cs中找到它。)没有这句话,所以CustomControl1不正常。如果你不想把AssemblyInfo.cs再包括进来,引起FAQ问2的情况,可以把上述代码复制到任何一个命名空间上面。如
- using System;
- using System.Windows;
- [assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //主题特定资源词典所处位置
- //(在页面或应用程序资源词典中
- // 未找到某个资源的情况下使用)
- ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
- //(在页面、应用程序或任何主题特定资源词典中
- // 未找到某个资源的情况下使用)
- )]
- namespace SgsInterface
- {
- class Program
- {
- [STAThread]
- public static void Main(string[] args)
- {
using System;using System.Windows;[assembly: ThemeInfo( ResourceDictionaryLocation.None, //主题特定资源词典所处位置 //(在页面或应用程序资源词典中 // 未找到某个资源的情况下使用) ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 //(在页面、应用程序或任何主题特定资源词典中 // 未找到某个资源的情况下使用))]namespace SgsInterface{ class Program { [STAThread] public static void Main(string[] args) {转自:http://blog.csdn.net/gqqnb/article/details/7213611
- 【发布软件】Visual Studio工具:自动递增版本号
- 【发布软件】Visual Studio工具:自动递增版本号
- Android 自动递增版本号
- Visual Studio工程清理助手(发布软件)
- visual studio各版本号
- visual studio 版本号
- .net c# vs自动递增版本号
- Jenkins与Visual Studio的自动编译和发布
- 自动更改发布的版本号
- Android 发布自动版本号方案
- PTVS 2.1 Beta版发布 Visual Studio的Python工具
- 微软重磅软件Visual Studio 2015率先出场 Visual Studio 2015正式发布
- Visual Studio开发工具(4):Visual Studio 2010简体中文版会在6月中旬发布
- VS软件版本号定义、规则和相关的Visual Studio插件
- VS软件版本号定义、规则和相关的Visual Studio插件
- Visual Studio 2005 Team System 中的软件测试工具
- Visual Studio 2005 Team System 中的软件测试工具
- VC自动生成软件版本号
- Queue is not empty
- 一口一口吃掉struts(七)——ActionForward知多少
- Objective-C--欧几里得算法
- C#实现图片压缩方法
- 黑马程序员_泛型
- 【发布软件】Visual Studio工具:自动递增版本号
- Oracle CBO术语大集合
- linux下安装rtx
- 给Oracle年轻的初学者的几点建议
- Hyper-V Centos Linux Integration Services
- 作图工具
- 获得文件上传路径,下载路径。
- deploy.wsdd成功后返还空白页面 (只有 And now... Some Services )
- java 集合