• 技术文章 >类库下载 >C#类库

    剖析 AssemblyInfo.cs - 从这里了解常用的特性 Attribute

    高洛峰高洛峰2016-10-14 17:09:49原创1227

    核心代码

    1.png

    展开图中的代码,看箭头↓

    using System.Reflection;
    using System.Runtime.InteropServices;
    
    // 有关程序集的常规信息通过下列特性集
    // 控制。更改这些特性值可修改
    // 与程序集关联的信息。
    [assembly: AssemblyTitle("MusicStore")]
    [assembly: AssemblyDescription("")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("Microsoft")]
    [assembly: AssemblyProduct("MusicStore")]
    [assembly: AssemblyCopyright("Copyright © Microsoft 2016")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    
    // 将 ComVisible 设置为 false 会使此程序集中的类型
    // 对 COM 组件不可见。如果需要
    // 从 COM 访问此程序集中的某个类型,请针对该类型将 ComVisible 特性设置为 true。
    [assembly: ComVisible(false)]
    
    // 如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID
    [assembly: Guid("a9ef3281-9049-4a52-a2f1-2061d442200e")]
    
    // 程序集的版本信息由下列四个值组成:
    //
    //      主版本
    //      次版本
    //      内部版本号
    //      修订版本
    //
    // 可以指定所有值,也可以使用“修订号”和“内部版本号”的默认值,
    // 方法是按如下所示使用 "*":
    [assembly: AssemblyVersion("1.0.0.0")]
    [assembly: AssemblyFileVersion("1.0.0.0")]

    一、全局属性

      大多数特性适用于特定的语言元素(如类或方法),但是,有些属性是全局它们适用于整个程序集或模块。如:AssemblyVersionAttribute 属性可用于向程序集中嵌入版本信息。

      全局特性在源代码中出现在任何顶级 using 指令以及任何类型、模块或命名空间声明之前。全局特性可显示在多个源文件,但是,在单一编译传递必须编译文件。在 C# 项目中,它们在 AssemblyInfo.cs 文件中。

      程序集特性是提供有关程序集的信息的值。它们分成以下类别:

        ①程序集标识特性

        ②信息性特性

        ③程序集清单特性

        ④强名称特性

      

      1.程序集标识特性

      三个特性 (使用强名称,如果适用) 确定程序集的标识:名称、版本和区域性。当在代码中引用时,这些特性构成程序集的完整名称需要。使用特性,可以将程序集的版本和区域性。但是,名称值由编译器,在 “程序集信息”对话框 的 Visual Studio IDE 设置,创建程序集后,根据包含程序集清单的文件。AssemblyFlagsAttribute 特性指定程序集的多个副本是否可以共存。

    1.png

    1.png

    1.png

    图 - “程序集信息”对话框中的名词和 AssemblyInfo.cs 文件的对应关系

    2.信息性特性

      您可以使用信息性特性为程序集提供其他的公司或产品信息。

    1.png

      3.程序集清单特性

      可以使用程序集清单特性提供程序集清单中的信息。其中包括标题、说明、默认别名和配置。

    1.png

    4.强名称特性(不深入)

      一般存在 Visual Studio 的早期版本,若要使用强名称的程序集执行以下程序集级别特性:

        ①AssemblyKeyFileAttribute

        ②AssemblyKeyNameAttribute

        ③AssemblyDelaySignAttribute

      这仍支持,但是,给程序集签名的首选方法是使用“签名页”。(这里不深入了解)

    二、已过时的特性

      Obsolete 属性指示某个程序实体标记为建议不再使用的一个。 每次使用对实体标记为过时根据随后将生成警告或错误,配置属性。

    /// 
        /// 旧类
        /// 
        [Obsolete("请使用 " + nameof(NewClass))]
        class OldClass
        {
            public void Method() { }
        }
    
        /// 
        /// 新类
        /// 
        class NewClass
        {
            [Obsolete("请使用 " + nameof(NewMethod), true)]
            public void OldMethod() { }
    
            public void NewMethod() { }
        }
    class Program
        {
            static void Main(string[] args)
            {
                var oldClass = new OldClass();  //警告
    
                var newClass = new NewClass();
                newClass.OldMethod();  //报错
            }
        }

    1.png

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:C#读取文件夹特定文件的方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • C# 属性访问器• c# 特性• C# 在腾讯的发展• C#读取文件夹特定文件的方法• C# 托盘程序 实例 双击显示窗体,最小化到托盘
    1/1

    PHP中文网