Как запустить C # на Sublime Text 3 на macOS? - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь запустить C # на macOS, используя Sublime Text 3 на Автоматический режим под:

> Tools > Build System > Automatic

и собрал систему:

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

in Sublime Text 3 / Packages / Users / CSharp.sublime-build на основе этой статьи .

Я тестировал с CMD + B :

using System;

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

, который возвращает:

/ bin/ sh: csc: команда не найдена

и я не уверен, как это исправить, посмотрел некоторые похожие посты , такие как , но пока не могу понять,Как мне это исправить?


Другая информация

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

$ dotnet --version
2.2.401

$ ls /usr/local/share/dotnet/shared/Microsoft.NETCore.App/
2.2.6

1 Ответ

1 голос
/ 30 октября 2019

Если вы используете 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 пакет для запуска интерактивных программ. Terminus поддерживает только cmd, и я предпочитаю использовать shell_cmd, поэтому в сборке верхнего уровня не должно быть неявной команды.

Альтернативой этому может быть отказ от варианта Terminus или преобразование всех остальных в cmd. В этом случае вы можете переместить команду для наиболее распространенного элемента (скажем, вариант Run) на верхний уровень, чтобы запуск программы был по умолчанию.

В качестве последнего примечания для сборкиsysytem для работы предполагает, что вы работаете в папке, где вы используете соответствующую команду dotnet для создания пустого проекта. Я не знаю, если есть способ выполнить отдельные файлы C # ad-hoc, используя dotnet вне этого контекста.

...