【发布软件】Visual Studio工具:自动递增版本号
2013-03-20 10:03
169 查看
前言
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。
如果你跟我一样,采用第二种版本号风格,命令就是
[b][plain]
view plaincopyprint?
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包括在项目内的缘故。更重要的是,没有[csharp]
view plaincopyprint?
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(在页面或应用程序资源词典中
// 未找到某个资源的情况下使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(在页面、应用程序或任何主题特定资源词典中
// 未找到某个资源的情况下使用)
)]
[assembly: ThemeInfo( ResourceDictionaryLocation.None, //主题特定资源词典所处位置 //(在页面或应用程序资源词典中 // 未找到某个资源的情况下使用) ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 //(在页面、应用程序或任何主题特定资源词典中 // 未找到某个资源的情况下使用) )]
。(你应该能在项目外的AssemblyInfo.cs中找到它。)没有这句话,所以CustomControl1不正常。如果你不想把AssemblyInfo.cs再包括进来,引起FAQ问2的情况,可以把上述代码复制到任何一个命名空间上面。如
[csharp]
view plaincopyprint?
using System;
using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(在页面或应用程序资源词典中
// 未找到某个资源的情况下使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(在页面、应用程序或任何主题特定资源词典中
// 未找到某个资源的情况下使用)
)]
namespace SgsInterface
{
class Program
{
[STAThread]
public static void Main(string[] args)
{
using System;转自:/article/1994729.html
using System.Windows;
[assembly: ThemeInfo( ResourceDictionaryLocation.None, //主题特定资源词典所处位置 //(在页面或应用程序资源词典中 // 未找到某个资源的情况下使用) ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 //(在页面、应用程序或任何主题特定资源词典中 // 未找到某个资源的情况下使用) )]
namespace SgsInterface
{
class Program
{
[STAThread]
public static void Main(string[] args)
{
[/b]
相关文章推荐
- 【发布软件】Visual Studio工具:自动递增版本号
- CSDN相册自动上传图片工具 [软件发布]
- 使用Wise Install等工具发布Visual studio 2005 开发的软件产品
- WCF随客户端软件一起发布,客户端自动识别WCF服务地址,不通过配置文件绑定WCF服务,客户端动态获取版本号
- Visual Studio 2005 Team System 中的软件测试工具
- 端口映射工具之80端口映射软件无公网IP时发布网站应用等应用
- 【软件发布】zDrawHelp V1.0(画像素图的辅助工具)
- 软件发布:网页设计师必备 之 屏幕取色工具 附源码(支持Windows 2008)
- DD373自动发布工具/DD373辅助/DD373外挂
- 微信小程序前端自动生成工具,附软件使用视频
- 关于自动投票工具软件的实现
- 【最新免费软件】Powerpoint批量转换工具ppt2x 1.1隆重发布
- 自动化控制和测试的软件工具 Expect; 自动生成脚本的工具autoexpect
- 【软件发布】zDrawHelp V1.0(画像素图的辅助工具)
- VSTF Build Workflow(6)为你的文件自动递增版本号
- 【软件发布】发布一个查单词的小工具
- C#cookie自动获取工具发布
- [软件发布]:简单数据库查询工具 v1.0 For MsSQL(Java版本)
- 论坛自动回帖软件终于在多特软件站发布成功了
- 软件更新:WayOs配置、用户、策略等自动备份工具1.3