代码之家  ›  专栏  ›  技术社区  ›  Konstantin Tarkus

如何创建一个自定义的.NET基类库(BCL)又名mscorlib替换?

  •  9
  • Konstantin Tarkus  · 技术社区  · 14 年前

    有人知道怎么定制吗 BCL 处理库存 CLR ? 如何发现CLR和BCL之间存在的最本质的联系并重用它们?

    到目前为止,我掌握的情况如下: http://lightnet.codeplex.com

    4 回复  |  直到 14 年前
        1
  •  5
  •   Jon Skeet    14 年前

    高度地

    如果您能够让stock CLR与您自己的BCL实现一起工作,我会感到相当惊讶,尽管实现一个自定义的BCL与Mono运行时一起工作可能要简单得多-至少您可以在遇到问题时调试正在发生的事情。

        2
  •  6
  •   Alex Forster    14 年前
    • 退房 Script# ,一个用于将C#编译为Javascript的工具链,由在Microsoft工作的人员编写,并在内部用于他们的一些Web应用程序。他让你用/nostdlib编译并引用他最简单的重新实现的BCL。生成程序集后,工具将通过它进行反射并将其转换为Javascript。他使用重新实现的BCL来启用准确的调试,并防止您使用在Javascript上下文中没有意义的BCL特性。它看起来非常像您的代码,包括大多数类本身是空的或者只有几个空方法。这是因为BCL的类/方法是用Javascript实现的。

    • 这可能是一个专利雷区。我在最近的Oracle诉讼中了解到了这一点:只有在实现了BCL-to-spec的情况下,才可以遵守社区承诺(不过,与Java不同的是,您不必同时实现CLR)。是的,微软的专利豁免比Java更自由)。我认为这是一个非常好的想法,在很多情况下都很有用;我可以想象自己用它来代替DSL,或者代替嵌入脚本语言,或者代替迂腐地担心插件体系结构中的代码安全性。但从微软的角度考虑一下——如果他们允许对不符合要求的BCL进行专利豁免,有什么能阻止有人将他们的专利产品称为“不符合要求的BCL实现”并获得豁免呢?

        3
  •  1
  •   Aaron    14 年前

    希望这不是我正在挖掘的古老线索,但我看不到一年;假设这是一两个月前(大约9月10日)的线索。。。

    不管怎么说,这对我来说,除了学术目的,只是好玩/学习,没什么用。我怀疑它会失败,除非您使用反编译器来查看BCL的内部接口是什么样的,并确保您的实现满足默认CLR的期望;或者,检查Mono实现。

    完全地 自己重新实现CLR/CLI/CLS(以及“CL everything”),并为其他平台创建自己的.NET实现。

    编辑:注意,如果您使用.NET的任何其他部分,它将使用标准的BCL;因此您不会摆脱它,它仍然是需要的。如果你想在一个不存在标准.NET实现的平台上运行这个程序,那是件坏事,但我不认为你在做这个。。。

        4
  •  0
  •   John Saunders    14 年前

    即使您可以编写自己的BCL,您如何让其他代码使用它?所有这样的代码都是针对实际的BCL构建的,并且期望在BCL程序集中使用强名称。