【问题标题】:Asp.net 5 compilation process using dnvm使用dnvm的asp.net 5编译过程
【发布时间】:2015-07-17 06:45:06
【问题描述】:

谁能详细解释一下 Asp.net5 应用程序的编译和执行是如何工作的。

我对 .net 环境完全陌生

几个问题 当您使用 VS 2015(按 F5)构建应用程序时,我知道涉及的步骤是

  • 代码被转换为 CIL。 (它叫什么名字?它是 Rosyln 编译器吗? )
  • 此 CIL 代码被解释为机器代码

现在当我使用 dnvm 运行应用程序时会发生什么,

  1. how is it compiled ?
  2. What does CoreClr do?
  3. how is CoreClr different from Clr
  4. What happens when we do dnu restore
  5. what happens when we do dnx . exe
  6. At what stage is the CIL generated , where is the CIL stored 
  7. At what stage the JIT is used?

谢谢

【问题讨论】:

    标签: asp.net-core jit coreclr


    【解决方案1】:

    首先,DNVM 不用于编译或运行您的应用程序。 DNVM 是 DotNet Version Manager 的缩写,用于管理不同的 .NET 版本。例如,您可以拥有一个使用 .NET Core 的应用程序和另一个使用完整 .NET Framework 的应用程序。前者是后者的云优化、跨平台版本,它允许您将运行时与您的应用程序一起部署。阅读更多here 了解差异。

    1. 它是如何编译的?在 Windows 上,"Roslyn" 用于编译您的应用程序。在 Linux/Mac 上,当前使用 Mono,但一旦在这些平台上得到支持,就会被 Roslyn 取代。
    2. CoreCLR 做什么? CoreCLR 是 .NET Core 的运行时。
    3. CoreCLR 与 CLR 有何不同? CoreCLR 是 .NET Core 的运行时,CLR 是 .NET Framework 的运行时。
    4. 当我们执行dnu restore 时会发生什么?您的应用的依赖项已下载并添加到包目录中。
    5. 当我们执行dnx . exe 时会发生什么?它将在当前文件夹(由点表示)中查找 project.json 文件并调用 project.json 文件中配置的“exe”命令。
    6. CIL 是在什么阶段生成的,CIL 存储在哪里? CIL 在编译时生成。例如,当您执行dnx . run 时,应用程序是在内存中构建的。另一方面,如果您执行dnu build,它将为您的应用程序生成存储 CIL 的程序集(例如 dll:s)。
    7. 在什么阶段使用 JIT? JIT 代表 Just-In-Time 编译,在应用程序执行时执行。它将 CIL 代码转换为本地平台特定代码。

    您可以在ASP.NET 5 documentation 中找到更多信息(正在进行中)。

    【讨论】:

    • 谢谢@davidfowl! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多