C# 罗斯林在跨站台吗?

C# 罗斯林在跨站台吗?,c#,mono,roslyn,C#,Mono,Roslyn,我已经看了很长一段时间了,我对它感到好奇和兴奋。我注意到的一件事是,他们提到编译器是用托管代码重新编写的。这就提出了一个问题:Roslyn是否能够在非.NET虚拟机上运行,例如 我真的很想在我的视频游戏中嵌入使用Roslyn的C#脚本,并在我的应用程序中使用它们的许多其他功能,但我想知道使用Roslyn是否会破坏它在Mono上运行的能力 有人试过在Mono上运行Roslyn吗?可能吗?为什么 为了澄清,我感兴趣的是托管程序集是否可以在Mono上运行,以及它是否可以生成Mono可以运行的程序集。正

我已经看了很长一段时间了,我对它感到好奇和兴奋。我注意到的一件事是,他们提到编译器是用托管代码重新编写的。这就提出了一个问题:Roslyn是否能够在非.NET虚拟机上运行,例如

我真的很想在我的视频游戏中嵌入使用Roslyn的C#脚本,并在我的应用程序中使用它们的许多其他功能,但我想知道使用Roslyn是否会破坏它在Mono上运行的能力

有人试过在Mono上运行Roslyn吗?可能吗?为什么


为了澄清,我感兴趣的是托管程序集是否可以在Mono上运行,以及它是否可以生成Mono可以运行的程序集。

正如@Govert在评论中已经提到的那样,如果您想嵌入C#脚本功能,只需使用Mono等效的库/工具:Mono Csharp。(特别是因为,即使Roslyn可以在Mono上运行,其许可证可能会规定您不允许运行。)

Mono世界中的这个工具比Roslyn BTW早很多,并且是开源的。在这里,您甚至有一位Microsoft员工在写博客,并将其上传到Nuget:


我希望你的比赛会很精彩

尽管这与埃里克的想法相去甚远,但Roslyn一直在(Apache 2.0)和

哈马林的米格尔·德伊卡扎


当Roslyn发布时,它将成为Mono的一部分。他们已经是了。

我没有回答这个问题,因为我对此没有具体的知识,所以我可能是错的。但跨平台肯定不是项目的既定目标,因此,如果是跨平台的,那么它将是“偶然”的。我的猜测是,它不是,但是,因为它可能有一些特定于windows的pinvoke代码。因此,它与C#一样是跨平台的。但是,它目前作为VS扩展提供,因此需要将两者分开。我不会屏住呼吸等待这种许可证。nReporty 5是新的SharpDevelop/MonoDevelop C#代码分析工具,应该已经满足您的要求了。它的目标与Roslyn项目类似,尽管它不是一个完整的编译器。与Mono‘编译器即服务’-Mono.CSharp一起,您应该有一个可行的替代方案。这里有一个最近从Roslyn移植到NRefactory的代码示例:@KirkWoll:完全管理并不是Roslyn的“全部要点”;解决客户问题和生成强大的现代编译器体系结构是Roslyn的重点。使用托管代码编写是一种实现选择,这是由成本和上市时间等实际问题驱动的。Roslyn的早期版本大量使用了非托管库,尽管其中大部分已被对CCI的修改版本的调用所取代。对于某些功能,仍然可能存在非托管库调用。@HansPassant:Roslyn可能是用C#编写的,但这并不是跨平台或不跨平台的全部。这还取决于Roslyn项目引用和使用的程序集和BCL类型。例如,
System.Reflection.Emit
实际上是特定于.NET的;ECMA-335 CLI标准并未对其进行标准化。在这种特殊情况下,Mono恰好也支持这种非标准化功能(IIRC),但严格来说,它不一定非得支持。我对Roslyn的其他功能很好奇,而不仅仅是脚本,这就是为什么我问它的原因。题外话:微软最近对.NET的东西非常开放,Nuget不是由微软资助的吗?@mirhagk:正如Govert在上面的评论中提到的,Roslyn的等价物是NRefactory。请看这里的链接:好的,谢谢。我将使用mono等效工具来实现这些功能。有什么地方可以找到mono CSharp的文档吗?(除了基本的介绍外,我找不到其他内容)。具体来说,我想编译一些源代码,并从中获取一个我以后可以使用的方法(无需重新编译),所以。。。Linux为您的.NET项目构建服务器?这真是令人兴奋,现在我正在用它做一些令人兴奋的事情。除此之外,它不仅是开源的,.NET核心框架也是开源的。请在此处查找更多信息:虽然它在big endian系统上仍然存在问题,但至少上次我在powerbook上尝试它时是这样。