我创建了一个简单的应用程序,并且我在一本书中读到 C# 或任何 .net 程序被转换为包含汇编代码的程序集文件,但我想知道在哪里可以找到该程序集文件。
3 回答
所有 C# 程序(更一般地说,任何 .NET 语言)都转换为 .NET“程序集”,即包含中间字节码 - CIL的 .exe 或 .dll 。当您通过JIT 编译器即时运行程序时,该字节码会被编译为机器语言。
默认情况下,Visual Studio 会将 .NET 程序集放在项目/bin
文件夹中,然后将所选配置放在该文件夹下。(默认情况下只有 2 个存在,/bin/Debug
并且/bin/Release
)您可以在项目属性中更改它。
.NET 程序集中没有程序集代码,但您可以使用ildasm.exe或Mono.Cecil等工具查看 CIL 字节码。
JIT 编译器的好处是能够检测系统的当前硬件配置并根据 CPU 的特性应用优化。查看 JIT 生成的内容没有任何意义,因为这将因计算机而异。
您需要注意术语。
.NET 二进制文件称为“程序集”,它们不包含汇编代码(假设汇编代码是指实际的机器指令)。相反,它包含 CIL,它看起来类似于用于古怪 CPU 的汇编语言。在执行之前,CIL 被 Just-in-time 编译为平台的本地程序集,并运行。
如果您正在构建调试版本,那么bin/Debug
您的程序集将在哪里。对于发布它在bin/Release
请注意,这些目录是相对于您的 Visual Studio 项目位置的。
You can create two types of ASP.NET Assemblies in ASP.NET: private ASP.NET Assemblies and shared assemblies. Private ASP.NET Assemblies are created whey you build component files like DLLs that can be applied to one application. Shared ASP.NET Assemblies are created when you want to share the component files across multiple applications. Shared ASP.NET Assemblies must have a unique name and must be placed in Global Assembly Cache (GAC). The GAC is located in the Assembly directory in WinNT. You can view both the manifest and the IL using ILDisassembler (ildasm.exe).
参考: http: //www.dotnet-guide.com/assemblies.html