日期:2014-05-17  浏览次数:20925 次

贴一个C#下生成一次自动增加版本号的代码
VB中,每生成一次,能自动增加工程属性的版本号,C#下默认是每发布一次才增加,而生成时不会,这样很没成就感。本想用这个工具:http://autobuildversion.codeplex.com/releases/view/40744,但没成功,后面想到直接对 AssemblyInfo.cs 进行修改即可。调试出如下代码,贴出让与我有相同习惯的朋友参考(这种方式对多人开发模式就不好用了):
namespace T035
{
    #region 例行using语句
    using System;
    using System.Windows.Forms;
    #endregion

    /// <summary>
    /// 编译时,项目版本号自动加1的工具
    /// <para>简单模式的编程思路:</para>
    /// <para>取项目 AssemblyInfo.cs 文件中的版本号</para>
    /// <para>找到指定内容的行,版本号加1,保存回去,完事</para>
    /// <para>使用方法:</para>
    /// <para>VS2008中打开要处理的项目,对其属性下的生成事件页签,预生成事件命令行输入</para>
    /// <para><code>T035 "$(ProjectDir)"</code></para>
    /// <para>T035前面要不要指定路径就由你自己决定了,最简单的,就是把T035.exe放到System32目录</para>
    /// </summary>
    public static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// <para>需要带参数</para>
        /// </summary>
        /// <param name="args">要处理的项目 所在的路径,在VS中可以直接用宏$(ProjectDir)表示</param>
        [STAThread]
        public static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                MessageBox.Show("工具T035没有设置参数,应该要设为:T035 \"$(ProjectDir)\"");
                Application.Exit();
                return;
            }
            else if (args.Length > 1)
            {
                MessageBox.Show("工具T035有多个参数,是不是你的命令行没带双引号,而项目路径又带空格?");
                Application.Exit();
                return;
            }

            string sPath = args[0].Replace("\"", string.Empty) + "\\Properties\\";
            string sAssemOld = sPath + "AssemblyInfo.old";
            string sAssem = sPath + "AssemblyInfo.cs";