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

Kon*_*kus 9 .net c# clr class-library mscorlib

有人知道如何使用CLR定制BCL吗?如何发现现有CLR和BCL之间最基本的联系并重用它们?

以下是我到目前为止:http://lightnet.codeplex.com

小智 6

  • 查看Script#,这是一个用于将C#编译为Javascript的工具链,该工具由Microsoft的某个人编写,内部用于他们的一些webapps.这个人通过使用/ nostdlib进行编译并引用他最低限度重新实现的BCL来实现它.生成程序集后,工具会通过它反射并将其转换为Javascript.他使用重新实现的BCL来实现准确的调试,并防止您使用在Javascript上下文中没有意义的BCL功能.它看起来与您的代码现在非常相似,包括大多数类本身都是空的或只有一些空方法的事实.这是因为BCL的类/方法的实现是在Javascript中.

  • 这可能是一个专利雷区.我从最近的甲骨文诉讼中了解到这一点:如果你实施BCL规范,你只会受到社群承诺的约束(尽管与Java不同,你不需要同时实施CLR.是的,微软的专利豁免更多自由主义而不是Java的).我认为这是一个很棒的想法,可以在很多情况下使用; 我可以想象自己使用这个而不是DSL,或者不是嵌入脚本语言,而是在我的插件架构中迂回担心代码安全性.但从微软的角度考虑一下 - 如果他们允许对不合规的BCL进行专利豁免,那么阻止某人将其专有产品称为"不合规的BCL实施"并获得豁免的是什么呢?


Jon*_*eet 5

鉴于评论,听起来你想要使用自定义BCL的股票CLR.

非常怀疑这会奏效.CLR和BCL之间可能会有很多关系 - 他们会做出一定的实施期望,并依赖它们,而不是不合理.例如,CLR可能依赖于您不了解的某些内部类型.

如果你设法让股票CLR与你自己的BCL实现一起工作,我会感到非常惊讶,尽管实现自定义BCL以使用Mono运行时可能要简单得多 - 至少在那里你可以调试正在发生的事情.你遇到了问题.