使用 C# 编译的可执行文件有什么?
What does an executable compiled using C# have?
据我了解,
任何使用 C# 或 F# 或 VB.Net 编写的代码都由各自的编译器编译成 Visual studio 到 IL
代码。
因此,安装在客户端机器上的 .NET 框架 运行time (CLR) 将使用此 IL
代码转换为机器代码和 运行程序.
问题是,这个EXE包含什么? IL 和一些 headers ?
在 .NET 世界中,这些基本部署单元称为 Assemblies,在应用程序的情况下具有 .exe 扩展名,或 [= 21=.dll 扩展名的情况下
图书馆。
简而言之,一个程序集包含四种类型的东西:
- An assembly manifest 向 .NET 运行时提供信息,例如程序集的名称、版本、
请求的权限,以及它引用的其他程序集。
- An application manifest 向操作系统提供信息,例如程序集应该如何
部署以及是否需要管理提升。
- Compiled types:编译后的IL代码和程序集中定义的类型的元数据。
- 和Resources:程序集中嵌入的其他数据,例如图像和可本地化的文本。
以上四项中,只有程序集清单是必须的。
据我了解,
任何使用 C# 或 F# 或 VB.Net 编写的代码都由各自的编译器编译成 Visual studio 到
IL
代码。因此,安装在客户端机器上的 .NET 框架 运行time (CLR) 将使用此
IL
代码转换为机器代码和 运行程序.
问题是,这个EXE包含什么? IL 和一些 headers ?
在 .NET 世界中,这些基本部署单元称为 Assemblies,在应用程序的情况下具有 .exe 扩展名,或 [= 21=.dll 扩展名的情况下 图书馆。
简而言之,一个程序集包含四种类型的东西:
- An assembly manifest 向 .NET 运行时提供信息,例如程序集的名称、版本、 请求的权限,以及它引用的其他程序集。
- An application manifest 向操作系统提供信息,例如程序集应该如何 部署以及是否需要管理提升。
- Compiled types:编译后的IL代码和程序集中定义的类型的元数据。
- 和Resources:程序集中嵌入的其他数据,例如图像和可本地化的文本。
以上四项中,只有程序集清单是必须的。