我正在尝试在自动模式下使用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
[如果您使用的是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#文件。