【问题标题】:is there a way to boot code written in a managed language?有没有办法启动用托管语言编写的代码?
【发布时间】:2011-06-15 10:54:00
【问题描述】:

问题说明了一切。我可以将 C# 编译为本机代码并启动它吗?我知道 Cosmos 和 Singularity,但我想知道是否有更新的技术或工具。谢谢。

【问题讨论】:

    标签: c# boot


    【解决方案1】:

    显然您可以使用 Mono 编译为本机代码:

    http://www.mono-project.com/Mono:Runtime#Ahead-of-time_compilation

    不过,您将无法使用它编写操作系统。用 C# 编写整个操作系统是不可能的,Cosmos 和 Singularity 将有部分不是托管代码。

    当然,您也可以将代码设置为在 Windows 启动时启动 - 一旦 Windows 启动到登录屏幕及之后,.NET 应用程序就会正常运行。

    【讨论】:

    • 据我所知,Cosmos 没有用 C# 以外的语言编写任何东西,至少从他们网站上的说法来看是这样。不过,奇点确实如此。
    • 编译器不会在 C# 中,除非它首先被编译为本机代码 ->"Cosmos 包含一个编译器(IL2CPU,它是 Cosmos 的一部分),它读取输入文件(通常是 shell ) 和 Cosmos 库,并将生成的 IL 编译为 x86 代码。”
    • 对。这就是我所知道的。我想知道是否有更新的工具。
    【解决方案2】:

    您所说的“引导它”究竟是什么意思...如果您的意思是“在作为操作系统的机器上引导”,您需要设置引导加载程序并自己重新编写大部分 c# 函数。您还必须从较低级别的语言(汇编/c[++]/等)设置所有特定于机器的功能。基本上,没有大量工作就无法让它自行启动。

    【讨论】:

      【解决方案3】:

      一种选择是编写一个设置为随系统启动的 Windows 服务。我相信还有其他方法可以做到这一点,但这可能是“最简单的”。

      【讨论】:

      • OP 的意思是“启动”,如“从软盘驱动器启动”LOL。他提到的“Singularity”是一个操作系统。
      • 也许我应该使用术语“系统”服务而不是 Windows 服务,我只是更习惯于与 Web 服务区分开来。 OP 想要“其他”而不是 Singularity,这是一个支持 .NET CLR 的操作系统。但是你不能从可引导的 DVD/CD 引导到 Windows 并启动服务......哦,等等,你可以......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      • 2021-10-18
      相关资源
      最近更新 更多