首页 > 编程语言 >Learning hard C#学习笔记——读书笔记 05

Learning hard C#学习笔记——读书笔记 05

时间:2023-07-18 20:13:07浏览次数:45  
标签:exe 读书笔记 C# 代码 hard MANIFEST IL 我们

1.什么是IL语言

我们开篇介绍 C# 的时候,就介绍了 C# 的编译过程,C# 会通过编译器先编译成IL语言(Intermediate Language),IL代码会存放在一个程序集中



IL(Intermediate Language),它称为CIL或者MSIL,IL是由ECMA组织(也就是定义JS标准的那个组织),提供完整的定义和规范。使用Visual Studio中的 C# 编译器,我们可以直接将 C# 编译成 .exe 或 dll 文件,但是编译出来的程序代码并不是CPU直接可以使用的二进制代码,而是 IL 代码



2.从Hello World看IL


2.1 工具介绍

我们可以在自己的电脑找到以下目录,之后找到相关的内容



我们编写一个简单的程序

class Program {
    static void Main(string[] args) {
        string helloString = "Hello";
        Console.WriteLine(helloString);
    }
}

编译完毕之后,我们会发现,在项目的bin/Debug目录下,会生成一个 exe(可执行)文件


我们打开ILDasm.exe ,就可以看到一个UI界面





我们用这个工具打开,我们之前在项目目录下找到的 exe 文件,如果显示文件没有CLR标头,就打开 dll 文件



2.2 MANIFEST 清单介绍


我们双击 MANIFEST 图标,打开 MANIFEST 清单,看到如下输出




以上的这些内容,我们可以查看IL代码,不过对于新手,这些不必要了解太多,这里就当作介绍,我就不再记录下去

标签:exe,读书笔记,C#,代码,hard,MANIFEST,IL,我们
From: https://www.cnblogs.com/trueasureyuki/p/17563981.html

相关文章

  • 搭建本地ChatGPT
    -1下载并安装Docker【官网下载】2使用开源项目:潘多拉(Pandora)【github】3一键安装命令:dockerpullpengzhile/pandora启动端口:8899dockerrun-ePANDORA_CLOUD=cloud-ePANDORA_SERVER=0.0.0.0:8899-p8899:8899-dpengzhile/pandora4获取自己的......
  • [CTSC2015] 日程管理
    [CTSC2015]日程管理题意幽香是幻想乡中一个非常有地位的人。她日理万机,事务繁多,反倒自己已经快管理不过来了。于是他决定开发一个日程管理软件来帮助自己管理任务。对于每个任务\(i\)有一个对应的截止日期\(t_i\)以及收益\(p_i\),表示若幽香能在不晚于第\(t_i\)天完成这个任务,......
  • docker使用
    启动第一个docker容器:1.获取镜像:从配置好的docker镜像站中拉取nginx镜像。2.运行镜像,生成容器常用命令:dockerrim+镜像iddockerimagels---查看下载的镜像dockerrun参数镜像名字/id---运行镜像  dockerrun-d-p80:80nginx(-d:后台运行不占用内存;)dockerps---......
  • [Typescript] 149 Medium - Triangular number
    GivenanumberN,findtheNthtriangularnumber,i.e. 1+2+3+...+N/*_____________YourCodeHere_____________*/exporttypeNumberToArray<Textendsnumber,Rextends1[]=[]>=R["length"]extendsT?R:NumberToArray&......
  • CSS中关于Calc 函数的使用规则
    calc()函数用于动态计算长度值。需要注意的是,运算符前后都需要保留一个空格,例如:width:calc(100%-10px);任何长度值都可以使用calc()函数进行计算;calc()函数支持"+","-","*","/"运算;calc()函数使用标准的数学运算优先级规则;......
  • RocketMQ安装部署
    1.下载安装包解压2.环境配置系统变量3.修改配置conf/broker.confenablePropertyFilter=true#指定nameser的地址,把borker与nameser关联起来namesrvAddr=127.0.0.1:98764.启动先启动mqnamesrv.cmd,再启动mqbroker.cmd5.自动创建topicstartmqbroker.cmd-n1......
  • csv 压测读取常用策略
    如果想csv里的数据只使用一次     ================================== 遇到空行不结束 循环往复执行 -------------------------------------------------------------currentthread慎用,因为是随机的[bot]非常抱歉,我之前的回答中的"RandomOrder"......
  • AtCoder Beginner Contest 310
    A-OrderSomethingElse#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongint32_tmain(){ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);intn,p,q;cin>>n>>p>>q;......
  • poj 2311 Cutting Game (sg函数)
    小记:这题是对sg函数的初步理解。对于sg函数只要g[x]==0,则此时为必败态。x作为后继,我们就要对所有的后继进行标记,然后mex之。因为每次只能切一刀,所以切完之后,会有两块方格,而对每一块方格进行游戏又会有一个sg函数值,所以根据sg函数的性质,它这一刀所代表的后继,即为这两块方格的sg函......
  • poj 1632 Vase collection
    题意:有n个花瓶,每个花瓶都带有两种属性-形状和颜色,而每种属性都有36种不同的状态。求最大的k,使得k*k个花瓶的形状和颜色都有k种状态,且k*k个花瓶的两种属性都是由形状和颜色的k种状态组合而成的。题解:我们用一个数组(comb[])存放形状和颜色,数组的下标为形状,然后将颜色状态压缩成为数组......