.cs、.csx),通过 FsAutoComplete 支持 F#(.fs、.fsi、.fsx)。两者都以 .NET 工具的形式安装,调试都使用 netcoredbg。构建、NuGet 包和测试统一走 dotnet 命令行。其他语言见语言支持总览。
语言服务器
语言服务器会加载根据这些标记找到的解决方案或项目。FsAutoComplete 启动时开启了
AutomaticWorkspaceInit,无需等待编辑器请求就会自动加载项目。
跳转到类库类型的定义时,csharp-ls 返回反编译后的源码,以只读文档打开;源生成器生成的代码同样以只读方式打开。
ProjectSettings/ProjectVersion.txt 这个标记是为 Unity 项目准备的。把 OpenIDEA 设为 Unity 外部编辑器的方法见 Unity。
环境配置
需要安装 .NET SDK,并确保dotnet 在 PATH 上。IDE 的构建、测试和包管理命令都通过它执行,语言服务器也用它安装。
缺少语言服务器时,打开 C# 或 F# 文件会弹出“csharp-ls 未安装”(或 FsAutoComplete)的通知,点 安装 即可。也可以在 设置 › 语言和框架 › 语言服务器 中安装。
PATH 上已有的 csharp-ls、fsautocomplete 或 netcoredbg(例如通过 dotnet tool install --global csharp-ls 安装的全局工具)会直接使用。
.NET 工具窗口
.NET 工具窗口(位于右侧)管理项目文件夹中的.csproj、.fsproj 和 .vbproj 项目,包括 .sln、.slnx 解决方案中列出的项目及其项目引用。通过 查找操作…(⌘⇧A / Ctrl+Shift+A)执行 .NET 工作区 打开它;重新加载 .NET 工作区 会重新扫描文件夹。
对选中的项目可以:
- 选择 配置(默认
Debug)和 目标框架(多目标项目)。 - 构建、恢复、清理(也可以通过 构建 .NET 项目、还原 .NET 项目、清理 .NET 项目 这几个操作执行),输出显示在 输出 区域。
- 浏览 NuGet 包(包括间接依赖),用 搜索 NuGet 包 在已配置的包源中搜索(
dotnet package search),以及添加、更新或移除包(dotnet add package/dotnet remove package)。 - 查看 项目引用。
- 发现并运行测试(见下文)。
运行
对找到的每个.csproj(包括通过 .sln / .slnx 找到的),如果输出类型是 Exe 或 WinExe,或者使用了 Microsoft.NET.Sdk.Web,OpenIDEA 会生成运行配置:
- <项目> (.NET Project):
dotnet run --project <路径> --no-launch-profile。 - <项目>: <启动配置>:
Properties/launchSettings.json中每个启动配置各一个,以--launch-profile运行,并应用该配置中的环境变量、工作目录、命令行参数以及applicationUrl(作为ASPNETCORE_URLS)。
测试
引用了Microsoft.NET.Test.Sdk、MSTest、NUnit 或 xUnit,或者设置了 IsTestProject 的项目被视为测试项目,每个都会生成一个 dotnet test (<项目>) 配置。
- 在编辑器中,标注了
[Fact]、[Theory]、[Test]、[TestCase]、[TestCaseSource]、[TestMethod]或[DataTestMethod]的测试方法在行号栏会显示运行图标。 - 在 .NET 工具窗口中,发现 .NET 测试 会列出所有测试(
dotnet test --list-tests),可以全部运行或只运行其中一个。
Microsoft.Testing.Extensions.TrxReport 包才能生成报告,安装 TRX 报告支持 会按项目所用测试平台的版本添加它。
测试树和重新运行失败测试等内容见测试。
调试
以 调试 方式运行 .NET 项目配置时,IDE 会先构建项目,再向 MSBuild 查询输出程序集(Debug 配置下的TargetPath),然后在 netcoredbg 下启动。缺少 netcoredbg 时会弹出通知提供安装。
详见调试。
已知限制
- 只有 C# 项目(
.csproj)会自动生成运行配置。F# 和 VB 项目可以在 .NET 工具窗口中构建和测试,但运行配置需要自己创建。 - 测试配置不带调试器运行,.NET 测试没有调试入口。
- 没有 Visual Basic 语言服务器。
- netcoredbg 没有 Windows on Arm 的预编译包。
- 没有 WinForms、WPF 或 XAML 设计器。