Если вы используете 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
вне этого контекста.