【问题标题】:Where is the assembly file?汇编文件在哪里?
【发布时间】:2012-02-02 06:51:21
【问题描述】:

我创建了一个简单的应用程序,并且我在一本书中读到 C# 或任何 .net 程序被转换为包含汇编代码的汇编文件,但我想知道在哪里找到该汇编文件。

【问题讨论】:

  • 默认情况下,VS 会在你的项目文件夹下创建子文件夹 bin/Debug 和 bin/Release - 它们应该在里面。

标签: c# .net assemblies locate probing


【解决方案1】:

所有 C# 程序(更一般地说,任何 .NET 语言)都转换为 .NET“程序集”,即包含中间字节码的 .exe 或 .dll - CIL。当您通过JIT compiler 即时运行程序时,该字节码会被编译为机器语言。

默认情况下,Visual Studio 会将 .NET 程序集放在项目的 /bin 文件夹中,然后将所选配置放在该文件夹下。 (默认只存在 2 个,/bin/Debug/bin/Release)您可以在项目属性中更改此项。

.NET 程序集中没有程序集代码,但您可以使用 ildasm.exeMono.Cecil 等工具查看 CIL 字节码。

JIT 编译器的优势在于能够检测系统的当前硬件配置并根据 CPU 的特性应用优化。查看 JIT 生成的内容没有任何意义,因为这会因计算机而异。

【讨论】:

  • 除非你想看看对你的代码进行了什么样的优化,否则基于 JIT 编译做出假设是没有意义的,如果你是的话,查看 CIL 字节码会更有意义尝试优化(尽管分析您的代码会是更好的选择)
【解决方案2】:

您需要注意术语。

.NET 二进制文件称为“程序集”,它们不包含汇编代码(假设汇编代码是指实际的机器指令)。相反,它包含 CIL,它看起来类似于用于古怪 CPU 的汇编语言。在执行之前,CIL 会被 Just-in-time 编译为平台的原生 Assembly,然后运行。

如果您正在构建调试版本,bin/Debug 是您的程序集所在的位置。发布在bin/Release

请注意,这些目录是相对于您的 Visual Studio 项目位置的。

【讨论】:

  • 如何捕捉调试时正在执行的汇编代码?
  • 您想通过 CIL 而不是实际的源代码进行调试?
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 2021-12-17
    • 2019-07-05
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2011-01-10
    相关资源
    最近更新 更多