gpt4 book ai didi

C# 编译器即服务 : Mono. CSharp 与 Microsoft.CSharp

转载 作者:太空狗 更新时间:2023-10-30 01:20:24 26 4
gpt4 key购买 nike

我希望将我们代码中某些基于反射的部分替换为使用动态运行时编译性能更好的部分。环顾四周,我看到 Mono 和 Microsoft 都有单独的编译器即服务解决方案:Mono.CSharpMicrosoft.CSharp

冒着提出基于意见的问题的风险,我想知道这两者如何比较?

据我从非常肤浅的初步调查中得知,它们通常都提供 CAAS 功能。我能够使用 Microsoft.CSharp 编译一个“Hello World”类并执行它。虽然我还没有用 Mono 做同样的事情,但我假设它可以做同样的事情。

有没有人对其中一个或两个有任何经验并可以对此问题发表评论?


编辑:我不是要比较 Mono 的 C# 和 Microsoft 的 C# - 我们已经熟悉并使用两者。问题具体涉及两个 CAAS(编译器即服务)解决方案。

CAAS 不是(无论如何).NET 运行时的标准部分,即还没有 System.Compile 命名空间。 Mono.CSharpMicrosoft.CSharp 这两个解决方案是针对 C# 的独立非标准 CAAS 解决方案。它们的界面非常不同,因此是个问题。

Mono's compiler service

Microsoft's compiler service


编辑 #2: 完全忘记了 Roslyn (感谢 @Lex Li)

最佳答案

现在的 Microsoft.CSharp (.net 4.5) 是 C# 编译器用来发出 C# 动态表达式绑定(bind)的 API。因此它是 C# 编译器但非常有限。 .NET 和 Mono 都实现了相同的 API (dll),因此您可以在 .NET 上编译并在 Mono 上运行,反之亦然。

Mono.CSharp 是 Mono C# 编译器的评估器样式 API。它允许您编译任何 C# 类文本代码(表达式、语句、类型声明等)并执行它。它严重依赖 System.Reflection 和 System.Reflection.Emit。

这些都与 CodeDom 没有任何关系。

关于C# 编译器即服务 : Mono. CSharp 与 Microsoft.CSharp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19272081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com