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

阿米尔·阿比里(Amir Abiri)

我希望将代码的某些基于反射的部分替换为使用动态运行时编译性能更好的部分。环顾四周,我发现Mono和Microsoft都有单独的Compiler-as-a-Service解决方案:Mono.CSharpMicrosoft.CSharp

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

据我从一个非常肤浅的初步调查可以看出,它们通常都提供CAAS功能。我能够使用Microsoft.CSharp编译“ Hello World”类并执行它。而且,尽管我还没有对Mono进行相同的操作,但我假设它可以完成相同的操作。

是否有人对这两者有任何经验,可以对此问题发表评论?


编辑:我不是在问Mono的C#和Microsoft的C#的比较-我们已经熟悉并使用了两者。问题特别是关于两个CAAS即服务即编译)解决方案。

CAAS仍然不是.NET运行时的标准部分,也就是说,还没有System.Compile名称空间。这两种解决方案Mono.CSharp,并Microsoft.CSharp是C#独立非标CAAS解决方案。它们的界面非常不同,因此是个问题。

Mono的编译器服务

微软的编译器服务


编辑#2:完全忘记了罗斯林(感谢@Lex Li

马雷克·萨法尔(Marek Safar)

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Microsoft.CSharp库中的BadImageFormat异常

来自分类Dev

缺少类型Microsoft.CSharp.RuntimeBinder.Binder

来自分类Dev

Microsoft.CSharp库中的BadImageFormat异常

来自分类Dev

如何使用Mono.CSharp.Evaluator编译委托?

来自分类Dev

如何使用Mono.CSharp.Evaluator编译委托?

来自分类Dev

MVC5 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

来自分类Dev

打开项目时找不到Microsoft.CompactFramework.CSharp.targets

来自分类Dev

'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException''对象'不包含'intEmployeeId'的定义

来自分类Dev

如何为 Microsoft.codeAnalysis.CSharp 配置 BindingRedirects

来自分类Dev

\MSBuild\16.0\Bin\Microsoft.CSharp.targets 文件未找到

来自分类Dev

Emacs“ csharp-mode”字节编译错误

来自分类Dev

csharp中的类级别锁定

来自分类Dev

Serilog,Loggly-csharp,FullNetFx

来自分类Dev

在CSharp中解析-如何理解

来自分类Dev

csharp中emgucv的全局阈值

来自分类Dev

CSharp中的JavaScript“打包”功能

来自分类Dev

CSharp 和 javascript 中的 FromXmlString

来自分类Dev

发生“ Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的第一次机会异常

来自分类Dev

错误:*。csproj无法在MonoDevelop上导入“ $(MSBuildBinPath)\ Microsoft.CSharp.targets”

来自分类Dev

VS 2019-从Microsoft.CodeAnalysis.CSharp.Analyzers看到许多警告AD0001

来自分类Dev

Microsoft Graph CSharp SDK和过滤-如何构造对CreatedDateItem进行过滤的调用?

来自分类Dev

在私有类型上动态抛出 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

来自分类Dev

VB.NET Azure Functions — Microsoft.CSharp 程序集有什么作用?

来自分类Dev

在Csharp C#代码中无法识别来自PowerShell字符串命令的管道字符

来自分类Dev

Antlr4(CSharp目标),语法= Java.g4:生成的JavaLexer.cs无法编译

来自分类Dev

使用正确的数据类型在 CSharp 中加载 C++ dll

来自分类Dev

Travis找不到CSharp解决方案

来自分类Dev

SendGrid-csharp-模板引擎-汉字

来自分类Dev

CSharp将.cs类转换为.dll

Related 相关文章

  1. 1

    Microsoft.CSharp库中的BadImageFormat异常

  2. 2

    缺少类型Microsoft.CSharp.RuntimeBinder.Binder

  3. 3

    Microsoft.CSharp库中的BadImageFormat异常

  4. 4

    如何使用Mono.CSharp.Evaluator编译委托?

  5. 5

    如何使用Mono.CSharp.Evaluator编译委托?

  6. 6

    MVC5 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

  7. 7

    打开项目时找不到Microsoft.CompactFramework.CSharp.targets

  8. 8

    'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException''对象'不包含'intEmployeeId'的定义

  9. 9

    如何为 Microsoft.codeAnalysis.CSharp 配置 BindingRedirects

  10. 10

    \MSBuild\16.0\Bin\Microsoft.CSharp.targets 文件未找到

  11. 11

    Emacs“ csharp-mode”字节编译错误

  12. 12

    csharp中的类级别锁定

  13. 13

    Serilog,Loggly-csharp,FullNetFx

  14. 14

    在CSharp中解析-如何理解

  15. 15

    csharp中emgucv的全局阈值

  16. 16

    CSharp中的JavaScript“打包”功能

  17. 17

    CSharp 和 javascript 中的 FromXmlString

  18. 18

    发生“ Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的第一次机会异常

  19. 19

    错误:*。csproj无法在MonoDevelop上导入“ $(MSBuildBinPath)\ Microsoft.CSharp.targets”

  20. 20

    VS 2019-从Microsoft.CodeAnalysis.CSharp.Analyzers看到许多警告AD0001

  21. 21

    Microsoft Graph CSharp SDK和过滤-如何构造对CreatedDateItem进行过滤的调用?

  22. 22

    在私有类型上动态抛出 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

  23. 23

    VB.NET Azure Functions — Microsoft.CSharp 程序集有什么作用?

  24. 24

    在Csharp C#代码中无法识别来自PowerShell字符串命令的管道字符

  25. 25

    Antlr4(CSharp目标),语法= Java.g4:生成的JavaLexer.cs无法编译

  26. 26

    使用正确的数据类型在 CSharp 中加载 C++ dll

  27. 27

    Travis找不到CSharp解决方案

  28. 28

    SendGrid-csharp-模板引擎-汉字

  29. 29

    CSharp将.cs类转换为.dll

热门标签

归档