c# - 在 macOS 上编译/运行单个 C# 文件

标签 c# macos .net-core csc

我能够通过 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 应用程序。

澄清一下,我不想在运行时运行代码,而是从运行时生成的代码(作为字符串)构建可执行文件。

最佳答案

正在运行 csc directly 只有在作为构建过程的一部分完成时才有意义,或者在支持执行 .Net Framework(或 .Net Standard)程序集的平台上运行时才有意义 - 即目前的 Windows,然后仅适用于琐碎的无依赖代码.

你需要的是dotnet new console要创建项目,请输入您的 Program.cs在项目文件夹中,然后是 dotnet build将生成可执行文件(在下载必要的 nuget 依赖项等之后)。要共享可执行文件,请使用 dotnet publish -c <configuration> -r <runtime> --self-contained true (例如 <configuratio>Release<runtime>osx-x64)。

这项技术称为 .Net Native,它很棒。

关于c# - 在 macOS 上编译/运行单个 C# 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57806529/

相关文章:

macos - 如何以编程方式在 OSX Xcode 项目中设置 WebView 的 URL?

c# - 操作系统范围内覆盖键盘输入?

c# - Wpf如何根据变量动态渲染按钮

c# - 注册 c# .net core 控制台应用程序以在 macOS 上的系统启动时启动

MacOS 需要不同的操作系统版本与 Info.plist

cocoa - 在界面生成器中创建带有图像的自定义按钮

c# - 从 .net core 2.2 迁移到 3.1 后无法上传文件

unit-testing - .NET 核心使用 Xunit + Autofixture + Moq 编写更好的单元测试

c# - 如何在不丢失 C# 中的数据的情况下将 double 值转换为字符串

c# - 在 C# 中,为什么在这种情况下使用字段与自动实现的属性会导致不同的行为?