Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对MSIL感到困惑_C#_.net_Cil - Fatal编程技术网

C# 对MSIL感到困惑

C# 对MSIL感到困惑,c#,.net,cil,C#,.net,Cil,我读过c#程序编译需要两个步骤 它首先生成MSIL,然后生成机器代码。所以我很想看到由第一阶段编译(MSIL)生成的文件 我一直认为DLL文件是包含MSIL代码的文件,但我认为我错了。你是对的。NET DLL和EXE(在.NET中称为程序集)是包含MSIL的。DLL可以有不同于.NET的另一种格式,因此.NET程序集有一个头,使它们可以识别。您可以使用corflags.exe检查DLL/exe是否为.NET DLL/exe 程序集中的IL代码由CLR(公共语言运行库)解释,CLR将其转换为机器代

我读过c#程序编译需要两个步骤

它首先生成MSIL,然后生成机器代码。所以我很想看到由第一阶段编译(MSIL)生成的文件


我一直认为DLL文件是包含MSIL代码的文件,但我认为我错了。

你是对的。NET DLL和EXE(在.NET中称为程序集)是包含MSIL的。DLL可以有不同于.NET的另一种格式,因此.NET程序集有一个头,使它们可以识别。您可以使用
corflags.exe
检查DLL/exe是否为.NET DLL/exe


程序集中的IL代码由CLR(公共语言运行库)解释,CLR将其转换为机器代码。您实际上看不到该步骤,因为它是由JIT在运行时完成的(或者您应该使用
ngen.exe预编译程序集并读取生成的文件)。

您是对的。NET DLL和EXE(在.NET中称为程序集)是包含MSIL的。DLL可以有不同于.NET的另一种格式,因此.NET程序集有一个头,使它们可以识别。您可以使用
corflags.exe
检查DLL/exe是否为.NET DLL/exe


程序集中的IL代码由CLR(公共语言运行库)解释,CLR将其转换为机器代码。您实际上看不到该步骤,因为它是由JIT在运行时完成的(或者您应该使用
ngen.exe
预编译程序集并读取生成的文件)。

.net有多种语言(C#、VB.net等)

编译C#项目库时,它会输出一个包含
IL
代码的dll

C#编译成IL就像VB.net编译成IL一样,因此您可以将两种语言之间的代码“混用”

此IL在运行时使用编译器编译为机器代码(请阅读有关

您可以通过使用反射器和反射dll来查看IL代码


阅读更多。

.net有多种语言(C#、VB.net等)

编译C#项目库时,它会输出一个包含
IL
代码的dll

C#编译成IL就像VB.net编译成IL一样,因此您可以将两种语言之间的代码“混用”

此IL在运行时使用编译器编译为机器代码(请阅读有关

您可以通过使用反射器和反射dll来查看IL代码


阅读更多。

您可以使用
corflags.exe
。如果文件没有有效的托管头,它将返回一个错误。您具体要求什么?这里提出了几个问题……我阅读了c#程序编译需要两个步骤。首先,它生成MSIL,然后生成机器代码。所以我很想看看编译第一阶段生成的文件。我一直认为dll文件是包含MSIL代码的文件,但我认为我错了。请告诉我。使用ILDASM.exe打开DLL/exe文件。它是框架的一部分。这可能会有帮助:您可以使用
corflags.exe
。如果文件没有有效的托管头,它将返回一个错误。您具体要求什么?这里提出了几个问题……我阅读了c#程序编译需要两个步骤。首先,它生成MSIL,然后生成机器代码。所以我很想看看编译第一阶段生成的文件。我一直认为dll文件是包含MSIL代码的文件,但我认为我错了。请告诉我。使用ILDASM.exe打开DLL/exe文件。它是框架的一部分。这可能会有帮助:LinqPad实际上为您编译的代码生成IL,理论上,使用未模糊化的代码,完全可以在“MSIL”中获得大部分内容。是的,但第二步不是。反射和ILDASM是第一步使用的工具。你说“第二步不是”是什么意思?除非你对代码进行了模糊处理,否则你可以反映它并重新编译它。啊,现在我明白了,对我来说仍然是早上。LinqPad实际上为你编译的代码生成IL,理论上,使用未模糊的代码,完全有可能在“MSIL”中获得大部分内容。是的,但第二步不是。反射和ILDASM是第一步使用的工具。你说“第二步不是”是什么意思?除非你把代码弄糊涂了,否则你可以把它反映出来,然后重新编译。啊,现在我明白了,对我来说还是早上好。