核心程式碼
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 特性指定組件的多個副本是否可以共存。 圖- 「程式集資訊」對話方塊中的名詞與 AssemblyInfo.cs+其他的公司或產品資訊。
3.程式集清單特性
可以使用程式集清單特性提供程式集清單中的資訊。其中包括標題、說明、預設別名和配置。
4.強名稱特性(不深入)
一般存在Visual Studio 的早期版本,若要使用強名稱的程序集執行以下程序集級別特性:
①AssemblyKeyFileAttribute ②AssemblyKeyNameAttribute ③AssemblyDelaySignAttribute這仍然支持,但是,給程序集簽名的首選方法是使用“簽名頁”。 (這裡不深入了解) 二、已過時的特性 Obsolete 屬性指示某個程式實體標記為建議不再使用的一個。 每次使用對實體標記為過時根據隨後將產生警告或錯誤,配置屬性。/// <summary> /// 旧类 /// </summary> [Obsolete("请使用 " + nameof(NewClass))] class OldClass { public void Method() { } } /// <summary> /// 新类 /// </summary> 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(); //报错 } }