fbpx
维基百科

程序集 (CLI)

通用语言基础架构 (CLI) 中的程序集是编译得到的,供CLR进一步编译执行的代码库。代码是用通用中间语言(CIL)表示,在运行时即時編譯机器语言。在.NET Framework实现中,这种即時編譯通用语言运行时 (CLR)的一部分。

CLI程序集可分为两类:进程程序集(EXE)、库程序集(DLL)。

一个程序集可包含一个或多个文件。代码文件成为模块(module)。

程序集名字

程序集名字包括4部分:

  1. 短名字。对于Windows系统,是指PE文件名字,不包括文件扩展名。
  2. culture。RFC 1766定义的locale的标识符。一般应是culture中立的。culture只用于satellite程序集
  3. 版本号。点分隔的数字,由4部分组成:major, minor, build, revision
  4. 公钥token。公钥的64比特哈希值,用于签名[1]该程序集。一个签名的程序集称为“强名字”(strong name)。者能预防程序集重名。由于FAT32NTFS只识别PE文件名,因此CLI引入了全局程序集缓存(GAC)处理运行时单个文件夹被映射为不同的嵌套的文件夹系统。

程序集版本

CLI程序集可以用版本信息,以避免由于共享的程序集版本差别引起的应用程序冲突。[2] However, this does not eliminate all possible versioning conflicts between assemblies.[3]

引用程序集

通过C#编译器的/reference标记,可以引用一个可执行代码库。

程序集延迟签名

一个共享程序集是强名字的,但在开发时不产生私钥,仅当部署时才产生私钥。

程序集的语言

程序集编译为CIL代码,这是一种中间语言。框架内部把CIL字节码转换为本地的汇编代码。对于打印"Hello World"的程序,其等效的CIL代码是:

 .method private hidebysig static void Main(string[] args) cil managed {  .entrypoint  .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )  // Code size 11 (0xb)  .maxstack 1  IL_0000: ldstr "Hello World"  IL_0005: call void [mscorlib]System.Console::WriteLine(string)  IL_000a: ret } // end of method Class1::Main 

CIL代码装入String到运行栈,然后调用WriteLine函数再返回。

参见

参考文献

  1. ^ Giving a .NET Assembly a Strong Name. [2019-07-04]. (原始内容于2012-02-24). 
  2. ^ Truche, Philippe. . 2008-08-12 [2008-09-21]. (原始内容存档于24 October 2008). 
  3. ^ Pierson, Harry. . 2008-09-17 [2008-09-21]. (原始内容存档于1 November 2008). 

程序集, 关于对于通用语言基础架构中的程序集语言部分, 请见, 通用中间语言, 通用语言基础架构, 中的程序集是编译得到的, 供clr进一步编译执行的代码库, 代码是用通用中间语言, 表示, 在运行时被即時編譯为机器语言, framework实现中, 这种即時編譯是通用语言运行时, 的一部分, cli程序集可分为两类, 进程程序集, 库程序集, 一个程序集可包含一个或多个文件, 代码文件成为模块, module, 目录, 程序集名字, 程序集版本, 引用程序集, 程序集延迟签名, 程序集的语言, 参见, 参考文献程. 关于对于通用语言基础架构中的程序集语言部分 请见 通用中间语言 通用语言基础架构 CLI 中的程序集是编译得到的 供CLR进一步编译执行的代码库 代码是用通用中间语言 CIL 表示 在运行时被即時編譯为机器语言 在 NET Framework实现中 这种即時編譯是通用语言运行时 CLR 的一部分 CLI程序集可分为两类 进程程序集 EXE 库程序集 DLL 一个程序集可包含一个或多个文件 代码文件成为模块 module 目录 1 程序集名字 2 程序集版本 3 引用程序集 4 程序集延迟签名 5 程序集的语言 6 参见 7 参考文献程序集名字 编辑程序集名字包括4部分 短名字 对于Windows系统 是指PE文件名字 不包括文件扩展名 culture RFC 1766定义的locale的标识符 一般应是culture中立的 culture只用于satellite程序集 版本号 点分隔的数字 由4部分组成 major minor build revision 公钥token 公钥的64比特哈希值 用于签名 1 该程序集 一个签名的程序集称为 强名字 strong name 者能预防程序集重名 由于FAT32与NTFS只识别PE文件名 因此CLI引入了全局程序集缓存 GAC 处理运行时单个文件夹被映射为不同的嵌套的文件夹系统 程序集版本 编辑CLI程序集可以用版本信息 以避免由于共享的程序集版本差别引起的应用程序冲突 2 However this does not eliminate all possible versioning conflicts between assemblies 3 引用程序集 编辑通过C 编译器的 reference标记 可以引用一个可执行代码库 程序集延迟签名 编辑一个共享程序集是强名字的 但在开发时不产生私钥 仅当部署时才产生私钥 程序集的语言 编辑主条目 通用中间语言 程序集编译为CIL代码 这是一种中间语言 框架内部把CIL字节码转换为本地的汇编代码 对于打印 Hello World 的程序 其等效的CIL代码是 method private hidebysig static void Main string args cil managed entrypoint custom instance void mscorlib System STAThreadAttribute ctor 01 00 00 00 Code size 11 0xb maxstack 1 IL 0000 ldstr Hello World IL 0005 call void mscorlib System Console WriteLine string IL 000a ret end of method Class1 Main CIL代码装入String到运行栈 然后调用WriteLine函数再返回 参见 编辑Manifest CLI 参考文献 编辑 Giving a NET Assembly a Strong Name 2019 07 04 原始内容存档于2012 02 24 Truche Philippe NET Assembly Versioning Lifecycle 2008 08 12 2008 09 21 原始内容存档于24 October 2008 Pierson Harry DLR Namespace Change Fire Drill 2008 09 17 2008 09 21 原始内容存档于1 November 2008 取自 https zh wikipedia org w index php title 程序集 CLI amp oldid 61704291, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。