【发布时间】:2019-09-05 13:24:19
【问题描述】:
我能够通过 VS for Mac 开发基于 .NET Core 的 C# 应用程序,现在我创建了一个“编译器”,它为我创建的语言生成 C#。我想至少运行输出(一个名为 Program.cs 的文件)并希望将其编译为 macOS 上的可执行文件。
在 Windows 上,这可以通过以下方式完成:
csc /optimize /t:exe /out:Program.exe Program.cs
奇怪的是,这个确切的命令在 macOS 上也同样有效,并生成一个 Windows 可执行文件。我想要的是 mac 可执行文件的等价物。但是,csc documentation 声明唯一的编译器目标是“库”、“模块”和 Windows 应用程序。
为了澄清,我不想在运行时运行代码,而是从运行时生成的代码(作为字符串)构建可执行文件。
【问题讨论】:
-
即使在 Windows 上,正确的做法是直接使用 Roslyn,而不是通过
csc命令 -
如果您想像脚本一样运行 C# 代码,您可能会发现我在这里使用的代码非常有用:gitlab.com/Syroot/NintenTools.Bfres/blob/master/src/…
-
@Ray 代码使用了 Roslyn 的内心深处。它没有用,因为它不包含对其作用或相关部分的任何解释
-
在 Roslyn 存储库中查看 Scripting API samples。本文档展示了如何解析和执行从表达式到完整脚本的任何内容