.net 自动生成程序集版本号
参考:http://blog.163.com/china0359@yeah/blog/static/1217194362010577545938/
上述内容中,还有版本号设置规则等内容,感觉还不错。
版本号可以存放在AssemblyInfo.cs文件中,[assembly: AssemblyVersion("1.0.0.0")]可以修改为:[assembly: AssemblyVersion("1.0.0.*")];4个数字分别为主版本、次版本、内部版本号、修订号。
前两个是对外发布用的,要手工修改;
内部版本号,是2000年1月1日到编译日期的天数;
内部修订号是当天从0点0分0秒到当前时间的毫秒数。
该文件中除了版本号外,还有产品名称、公司名称等信息。
using System.Diagnostics;//取文件版本号用
////Application.ProductVersion;//程序集版本号
lbVer.Text = "版本号:" + GetAssembly(typeof(System.Reflection.AssemblyVersionAttribute));
/// <summary>
/// 获取程序集项目属性内容
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
private string GetAssembly(Type type)
{
if (type.ToString() == "System.Reflection.AssemblyVersionAttribute")
{//程序集版本号,要用这个方法获取,无法用下边的方法获取,原因不知
return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
object[] attributes = System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(type, false);
if (attributes.Length > 0)
{
if (type.ToString() == "System.Reflection.AssemblyCompanyAttribute")
{
#region//公司
System.Reflection.AssemblyCompanyAttribute company = (System.Reflection.AssemblyCompanyAttribute)attributes[0];
if (company.Company != "")
{
return company.Company;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyCopyrightAttribute")
{
#region//版权
System.Reflection.AssemblyCopyrightAttribute company = (System.Reflection.AssemblyCopyrightAttribute)attributes[0];
if (company.Copyright != "")
{
return company.Copyright;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyTitleAttribute")
{
#region//标题
System.Reflection.AssemblyTitleAttribute company = (System.Reflection.AssemblyTitleAttribute)attributes[0];
if (company.Title != "")
{
return company.Title;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyDescriptionAttribute")
{
#region//备注
System.Reflection.AssemblyDescriptionAttribute company = (System.Reflection.AssemblyDescriptionAttribute)attributes[0];
if (company.Description != "")
{
return company.Description;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyProductAttribute")
{
#region//产品名称
System.Reflection.AssemblyProductAttribute company = (System.Reflection.AssemblyProductAttribute)attributes[0];
if (company.Product != "")
{
return company.Product;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyTrademarkAttribute")
{
#region//商标
System.Reflection.AssemblyTrademarkAttribute company = (System.Reflection.AssemblyTrademarkAttribute)attributes[0];
if (company.Trademark != "")
{
return company.Trademark;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyConfigurationAttribute")
{
#region//获取程序集配置信息,具体什么内容,不清楚
System.Reflection.AssemblyConfigurationAttribute company = (System.Reflection.AssemblyConfigurationAttribute)attributes[0];
if (company.Configuration != "")
{
return company.Configuration;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyCultureAttribute")
{
#region//获取属性化程序集支持的区域性,具体什么内容,不清楚
System.Reflection.AssemblyCultureAttribute company = (System.Reflection.AssemblyCultureAttribute)attributes[0];
if (company.Culture != "")
{
return company.Culture;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyVersionAttribute")
{
#region//程序集版本号
System.Reflection.AssemblyVersionAttribute company = (System.Reflection.AssemblyVersionAttribute)attributes[0];
if (company.Version != "")
{
return company.Version;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyFileVersionAttribute")
{
#region//文件版本号
System.Reflection.AssemblyFileVersionAttribute company = (System.Reflection.AssemblyFileVersionAttribute)attributes[0];
if (company.Version != "")
{
return company.Version;
}
#endregion
}
else if (type.ToString() == "System.Reflection.AssemblyInformationalVersionAttribute")
{
#region//产品版本号
System.Reflection.AssemblyInformationalVersionAttribute company = (System.Reflection.AssemblyInformationalVersionAttribute)attributes[0];
if (company.InformationalVersion != "")
{
return company.InformationalVersion;
}
#endregion
}
}
//如果没有 属性,或者 属性为一个空字符串,则返回 .exe 的名称
return System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
}
除此以外,在项目-属性-发布中,有个发布版本,可以设置为“随每次发布自增自动递增修订号”,可以再点击“立即发布”后修改版本号,不过CS程序好像没什么发布的概念吧,谁对这个有方法可以说下,学习学习。