code_philo

导航

C#(Visual Studio) AssemblyInfo

AssemblyInfo

.NET Project的Properties文件夹下会自动生成一个AssemblyInfo.cs的文件,该文件包含的信息和项目->右键->属性->Application->Assembly Information完全一样。其作用是为程序集定义不同的属性。所有的属性都是基于.NET Framework中的System.Attribute。其语法如下:

[assembly:<attribute>(<setting>)]

AssemblyVersionAttribute

文件版本号的设置,其中Attribute可以省略 :

[assembly:AssemblyVersion("1.0")]
属性 描述
AssemblyTitle 程序集标题,默认为DLL库名
AssemblyDescription 关于程序集的简短描述
AssemblyCompany 程序集所属公司名称
AssemblyProduct 基于此程序集的产品名称
AssemblyCopyright 程序集所属版权
AssemblyTrademark 合法商标
AssemblyVersion 程序集的版本
AssemblyCulture 程序集支持的culture
AssemblyConfiguration 指定程序的生成配置,如发布或调试配置
ComVisible 控制程序集中所有类型对COM的可访问性

这些属性基本都允许用一个字符串来定义属性的值,AssemblyVersion例外,必须使用特定格式的字符串:Major.Minor.Build.Revision

Major和Minor分别为主、副版本号,版本号的的更改通常说明和先前的版本有不兼容的改动。例如,2.1版本和基于同样库的2.2版本有不兼容的地方。

构建号(Build)是一个程序集的相同副版本的不同编译设置。它偶尔也会出现不兼容的情况,但通常,如2.1.17和2.1.42版本的运行情况是一样的。

修订号(Revision)是用来固话bug或者其他偶发的更新,它通常不会破坏兼容性。

 

在程序中获取这些信息

原代码处(http://blog.sina.com.cn/s/blog_61c4c1f60100eira.html)

public class GetAssembly<T> {
        private Type myType;

        public GetAssembly(Type myType)
        {
            this.myType = typeof(T);
        }

        public string AssemblyName
        {
            get { return myType.Assembly.GetName().Name.ToString(); }
        }

        public string AssemblyFullName
        {
            get { return myType.Assembly.GetName().FullName.ToString(); }
        }

        public String CodeBase {
            get {
                return myType.Assembly.CodeBase;
            }
        }

        public String Version {
            get {
                return myType.Assembly.GetName().Version.ToString();
            }
        }

        public String Copyright {
            get {
                Type att = typeof(AssemblyCopyrightAttribute);
                object[] r = myType.Assembly.GetCustomAttributes(att, false);
                AssemblyCopyrightAttribute copyattr = (AssemblyCopyrightAttribute)r[0];
                return copyattr.Copyright;
            }
        }

        public String Company {
            get {
                Type att = typeof(AssemblyCompanyAttribute);
                object[] r = myType.Assembly.GetCustomAttributes(att, false);
                AssemblyCompanyAttribute compattr = (AssemblyCompanyAttribute)r[0];
                return compattr.Company;
            }
        }

        public String Configration {
            get {
                Type att = typeof(AssemblyConfigurationAttribute);
                object[] r = myType.Assembly.GetCustomAttributes(att, false);
                AssemblyConfigurationAttribute configattr = (AssemblyConfigurationAttribute)r[0];
                return configattr.Configuration;
            }
        }

        public string TradeMark {
            get {
                Type att = typeof(AssemblyTrademarkAttribute);
                object[] r = myType.Assembly.GetCustomAttributes(att, false);
                AssemblyTrademarkAttribute aa = (AssemblyTrademarkAttribute)r[0];
                return aa.Trademark;
            }
        }

        public string Culture {
            get {
                Type att = typeof(AssemblyCultureAttribute);
                object[] a = myType.Assembly.GetCustomAttributes(att, false);
                if (a.Length > 0) {
                    AssemblyCultureAttribute aa = (AssemblyCultureAttribute)a[0];
                    return aa.Culture;
                } else {
                    return "No value";
                }
            }
        }

        public String Description {
            get {
                Type att = typeof(AssemblyDescriptionAttribute);
                object[] r = myType.Assembly.GetCustomAttributes(att, false);
                AssemblyDescriptionAttribute descattr = (AssemblyDescriptionAttribute)r[0];
                return descattr.Description;
            }
        }

        public String Product {
            get {
                Type att = typeof(AssemblyProductAttribute);
                object[] r = myType.Assembly.GetCustomAttributes(att, false);
                AssemblyProductAttribute prodattr = (AssemblyProductAttribute)r[0];
                return prodattr.Product;
            }
        }

        public String Title {
            get {
                Type att = typeof(AssemblyTitleAttribute);
                object[] r = myType.Assembly.GetCustomAttributes(att, false);
                AssemblyTitleAttribute titleattr = (AssemblyTitleAttribute)r[0];
                return titleattr.Title;
            }
        }
}

posted on 2015-02-09 17:12  code_philosophy  阅读(480)  评论(0编辑  收藏  举报