如何在macOS上的Sublime Text 3上运行C#?

问题描述 投票:1回答:1

我正在尝试在自动模式下使用Sublime Text 3在macOS上运行C#:

> Tools > Build System > Automatic

并已建立系统:

{
    "cmd": ["csc $file && $file_base_name"],
    "shell": true,
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "selector": "source.cs",
    "quiet": true
}

基于Sublime Text 3 / Packages / Users / CSharp.sublime-build,基于this article

我已经用CMD + B进行了测试:

using System;

class re{
  public static void Main(){
    Console.WriteLine("Hello world");
  }
}

返回:

/ bin / sh:csc:找不到命令

而且我不确定如何解决此问题,查看了一些相关文章such as this,但仍无法解决。我该如何解决?


其他信息

$ which dotnet
/usr/local/share/dotnet/dotnet

$ dotnet --version
2.2.401

$ ls /usr/local/share/dotnet/shared/Microsoft.NETCore.App/
2.2.6
c# .net macos sublimetext3 sublimetext
1个回答
0
投票

[如果您使用的是dotnet core(从问题中出现),则需要使用dotnet来执行代码,而不是csc;那就是.NET的编译器(这些东西的命名法和怪异的命名让我有些头疼)。

过于简化,dotnet核心使用名为dotnet的命令来进行项目的编译和运行,而.NET使用msbuild之类的内容来运行构建并将csc用作基础编译器。要使用这些命令,您需要安装诸如Mono之类的东西(或.NET 4的正式MacOS版本,或假设存在的东西,您拥有什么)。

我个人用于这种事情的构建系统是:

{
    "working_dir": "${folder:${project_path:${file_path}}}",
    "selector": "source.cs",

    "variants":
    [
        {
            "name": "Build",
            "shell_cmd": "dotnet build",
            "word_wrap": false,
            "quiet": true,
        },
        {
            "name": "Clean",
            "shell_cmd": "dotnet clean"
        },
        {
            "name": "Run",
            "shell_cmd": "dotnet run"
        },
        {
            "name": "Run Interactive",
            "cmd": ["dotnet", "run"],
            "target": "terminus_open",
            "auto_close": false,
        }
    ],
}

这将建立具有多个变体的构建系统,您可以选择构建干净的程序或运行程序。如果在构建时未选择变体,则该命令将失败,因为顶级构建不包含任何用于构建任何东西的命令。

在这种情况下,这是因为最后一个使用Terminus包的变体允许运行交互式程序。总站仅支持cmd,我更喜欢使用shell_cmd,因此顶层构建无需隐式命令。

替代方法是放弃Terminus变体,或将所有其他变体转换为使用cmd。在这种情况下,您可以将最常见项目(例如Run变体)的命令移到顶层,以便默认运行该程序。

最后,为了使构建系统正常工作,假定您正在使用适当的dotnet命令创建一个空项目的文件夹中工作。我不知道是否有办法在该上下文之外使用dotnet执行单个即席C#文件。

© www.soinside.com 2019 - 2024. All rights reserved.