AssemblyInfo文件

简介: AssemblyInfo.cs文件主要用来设定生成的dll程序集的一些常规信息, 部分信息可以在引用dll时 从属性中直接看到.   // 标题,属性中不可见// 默认值是DLL库名,可以修改成任意值,不影响使用.// 注意: 千万不要当成生成的DLL的名字,生成的DLL的名字是你建立类库时输入的那个名字。

AssemblyInfo.cs文件主要用来设定生成的dll程序集的一些常规信息, 部分信息可以在引用dll时

从属性中直接看到.

 

// 标题,属性中不可见
// 默认值是DLL库名,可以修改成任意值,不影响使用.
// 注意: 千万不要当成生成的DLL的名字,生成的DLL的名字是你建立类库时输入的那个名字。
[assembly: AssemblyTitle("WebApplication01")]

 

// 描述,属性中可见。
[assembly: AssemblyDescription("")]

 

// 文化信息,属性中可见
// 注意:调用DLL时通过assembly的fullname来找,如“ClassLibraryForReadingInfo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”
// 这里可以赋值,但是会导致找不到DLL. 因为Caller一直是调用“ClassLibraryForReadingInfo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null” 而此时DLL为"ClassLibraryForReadingInfo, Version=1.0.0.0, Culture=en, PublicKeyToken=null"
提示找不到Assembly,不知道为什么是这样??
[assembly: AssemblyCulture("")]

 

//配置文件,不知道有什么用???
[assembly: AssemblyConfiguration("")]

 

// 公司,属性中不可见
[assembly: AssemblyCompany("")]   

 

// 产品信息
[assembly: AssemblyProduct("not for commerce")]

 

// 版权,属性中不可见
[assembly: AssemblyCopyright("Copyright ©  2009")]

 

// 商标,属性中不可见
[assembly: AssemblyTrademark("")]

 

//程序集是否对COM可见
[assembly: ComVisible(false)]

 

用程序获取Assembly信息
== 根据Type得到Assembly的信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace Test1
{
    class AccessAssembly
    {
        static void Main()
        {
            //Change "ClassLibraryForReadingInfo.Class1" to any Class.
            AssemblyInfo<ClassLibraryForReadingInfo.Class1> infoClass = new AssemblyInfo<ClassLibraryForReadingInfo.Class1>();
            Console.WriteLine("AssemblyFullName : {0}", infoClass.AssemblyFullName);
            Console.WriteLine("AssemblyName : {0}", infoClass.AssemblyName);
            Console.WriteLine("CodeBase : {0}", infoClass.CodeBase);
            Console.WriteLine("Company : {0}", infoClass.Company);
            Console.WriteLine("Copyright : {0}", infoClass.Copyright);
            Console.WriteLine("Description : {0}", infoClass.Description);
            Console.WriteLine("Product : {0}", infoClass.Product);
            Console.WriteLine("Title : {0}", infoClass.Title);
            Console.WriteLine("Version : {0}", infoClass.Version);
            Console.WriteLine("Configration : {0}", infoClass.Configration);
            Console.WriteLine("TradeMark : {0}", infoClass.TradeMark);
            Console.WriteLine("Culture : {0}", infoClass.Culture);
            Console.Read();
        }
    }


    public class AssemblyInfo<T>
    {
        private Type myType;

        public AssemblyInfo()
        {
            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;
            }
        }
    }
}



转自:http://blog.sina.com.cn/s/blog_61c4c1f60100eira.html

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
8月前
|
监控 安全 调度
任务调度企业级场景下的新选择,兼容 XXL-JOB 通信协议
XXL-JOB 是一个开源的分布式任务调度平台,开箱即用、简单易上手,得到了很多开发者的喜爱。和其他中间件开源项目一样,当开发者把开源项目部署到公共云,应用到企业级场景中时,就会在稳定性、性能、安全、其他云产品间集成体验上提出更高的要求。基于此背景,阿里云微服务引擎 MSE 基于自研的分布式任务调度平台 SchedulerX,通过兼容 XXL-JOB 客户端的通信协议,在开源 XXL-JOB 版本的基础上,提升了稳定性、安全、性能、可观测等能力,满足企业客户的需求。此外,为方便测试,提供了一个月 400 元额度的免费试用和预付费首购 5 折、续费 6.5 折起的优惠。
412 178
|
9月前
|
机器学习/深度学习 人工智能 调度
【AI系统】CANN 算子类型
本文介绍了算子的基本概念及其在编程和数学中的作用,重点探讨了CANN算子在AI编程和神经网络中的应用,特别是华为CANN算子在AI CPU上的架构和开发要求。CANN是华为推出的异构计算架构,旨在优化AI处理器的计算效率,支持多种AI框架,涵盖AI Core和AI CPU算子,以适应不同类型的计算需求。文中还详细说明了AI CPU算子的开发流程和适用场景,为开发者提供了宝贵的指导。
388 2
|
存储 运维 监控
怎样配置Linux分析工具:kdump篇
在运维的世界里,服务器的稳定运行是生命的灯塔,一旦遭遇异常重启,便是暴风雨来临的预兆。作为一名运维工程师,深知在这场与故障斗争的战役中,武器的锋利至关重要。今天,我要介绍的主角/工具——kdump,正是这样一款能在风雨来临之际,为我们捕获那一闪而过的真相的工具。
怎样配置Linux分析工具:kdump篇
|
11月前
|
存储 Java API
动态代理实现的两种方式
【10月更文挑战第10天】
161 2
|
前端开发 SEO
WordPress简约响应式个人博客Kratos主题
Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净,简单且响应迅速的博客主题,Vtrois创建和维护,主题设计简约友好,并且支持响应式,自适应访问,简seo单大方的主页构造,使得博客能在臃肿杂乱的环境中脱颖而出,Kratos内置主题设置,可设置seo关键字及站点描述页面伪静态,自定义的顶部样式(背景图 ),支持图片轮播、侧边栏文章聚合、广告栏、点赞和社交化分享等功能,以及漂亮的博客订阅功能组件,让你的个人博客更加与众不同。
163 2
|
网络协议 iOS开发 MacOS
Mac使用TCP发送信息nc -l 9000 和 telnet 127.0.0.1 9000
Mac使用TCP发送信息nc -l 9000 和 telnet 127.0.0.1 9000
159 1
|
12月前
|
算法 数据安全/隐私保护 C++
超级好用的C++实用库之Des加解密
超级好用的C++实用库之Des加解密
302 0
|
存储 前端开发 JavaScript
vue+elementui+mysql实现个人博客系统
vue+elementui+mysql实现个人博客系统
|
数据可视化 前端开发 搜索推荐
数据可视化大屏百度地图GPS轨迹位置感知状态开发实战案例解析(百度地图jsAPI,包含缩放控件、点线覆盖物、弹窗、标注图标分类功能)
数据可视化大屏百度地图GPS轨迹位置感知状态开发实战案例解析(百度地图jsAPI,包含缩放控件、点线覆盖物、弹窗、标注图标分类功能)
513 0
|
负载均衡 网络协议
NAT模式 LVS负载均衡部署
NAT模式 LVS负载均衡部署