C#上位机软件:2.3 项目编译和运行过程分析
笔记摘要:
深入解析Visual Studio中项目的编译和运行机制。当启动项目时,VS根据所选语言(如C#、VB)编译源代码至中间语言(IL),并封装为EXE或DLL文件,即程序集。通过ILDASM工具展示了IL的代码形式。程序运行需经公共语言运行时(CLR)的即时编译(JIT),将IL转换为针对特定操作系统的机器码,实现两次编译过程,确保跨平台兼容性和安全性。讲师强调理解此流程的重要性,鼓励学生全面掌握项目生成和运行的全过程。
思维导图:

笔记和源码:https://pan.quark.cn/s/21896ce937d2
(需要将笔记文件的后缀.exe改成.zip,然后解压缩)
学习笔记:
1. Debug模式主要用于项目开发过程中的调试,帮助开发者定位和解决问题。 2. 在项目开发完成后,准备发布时,会使用非Debug模式进行最后的构建和发布工作。 3. 当点击启动时,可能不清楚Visual Studio(VS)编译器具体执行了哪些操作,这一过程需要解释和理解。 4. 通过一张图示,可以详细分析和解释外部项目从生成到运行的整个过程,帮助理解VS编译器在启动时的工作流程。 5. 理解这一流程对于优化项目构建、提升开发效率以及确保发布版本的稳定性和性能至关重要。


1. VS针对不同的开发语言使用不同的编译器,如C#使用CSC.exe编译器。 2. 编译器将代码编译成当代平台能识别的程序集,即通常所说的ESE或DLL文件。 3. 在debug目录下可以找到ESE文件,这是编译后的程序集,可以直接运行。 4. ESE文件能直接运行,因为它集成了所写的代码以及项目运行所需的所有信息,通过CSC.exe编译而成。


1. 创建的VB档案项目通过VBC点ESC文件进行编译,最终生成的是ESE文件,外观上难以区分。 2. VS自带有ILDASM工具,这是一款反汇编工具,但它并不能反编译回源代码。 3. 通过ILDASM,可以查看ES文件或DL文件编译完成后的内部代码结构,只需将文件拖放到工具中。 4. 这种方法使得用户能够了解编译后代码的具体形态,尽管无法直接还原成原始的源代码。 5. 利用ILDASM观察编译后的文件,有助于理解和分析代码的执行逻辑及结构。

1. 在2013年之后,某个功能或文件被隐藏了,需要在VS(Visual Studio)的安装目录里搜索才能找到。 2. 如果在VS安装目录中搜索不到所需文件,用户被告知无需担心,直接在目录内搜索通常能够找到。 3. 用户被指导打开一个名为“program”的类,检查其中是否包含一个叫做“main”的方法。 4. 代码编译完成后,会被存储在一个ESE文件中,以特定的形式保存。 5. 双击打开ESE文件,用户可以看到存储在其中的代码,这些代码是编译后的结果。







1. 安装VS时,会自动将公共语言运行时程序安装到操作系统上,但用户可能无法直接看到。 2. 公共语言运行时会随操作系统的启动而自动启动,无需用户手动操作。 3. 这意味着代码并非直接被操作系统或硬件解析,而是一种中间语言,操作系统和硬件无法直接理解这种语言。 4. 代码的执行需要通过公共语言运行时进行转换,才能被操作系统和硬件识别和执行。

1. 根据操作系统的不同,程序会生成对应的机器码,例如32位系统生成x86机器码,64位系统生成64位机器码。 2. 针对不同架构的CPU,程序也会生成相应架构的机器码,以确保在各种平台上都能运行。 3. 程序需要通过CLR(公共语言运行时)进行两次编译,这是运行的关键步骤。 4. CLR包含一个即时编译器(JIT),负责将中间语言(IL)编译成本地机器码。 5. 即时编译器的作用是将我们编写的程序中的中间语言(IL)编译成可直接在目标平台上运行的机器码。


1. 项目在生成和运行过程中分为两步:首先编译为中间语言,然后进行即时编译,转换为特定操作系统的机器码。 2. 编译过程依赖于操作系统的类型和位数,例如,Windows 7 32位系统将被编译为x86机器码。 3. 第一步的编译由VS(Visual Studio)编译器完成,将代码转换为中间语言。 4. 第二步的即时编译与操作系统紧密相关,尽管用户可能感知不到,但它是运行项目不可或缺的一部分。 5. 通过上述过程,DNet项目能够生成并运行,适应不同的操作系统环境。
1. 生成过程首先通过针对不同开发语言的编译器,将代码编译成中间语言。 2. 运行时,中间语言需通过在操作系统上安装的312程序,转换为操作系统可识别的机器码。 3. 整个生成过程包括两步编译:从源代码到中间语言,再从中间语言到机器码。 4. 同学们需理解并体会这一过程,以基本掌握项目的生成流程
更多推荐



所有评论(0)