如何将 C# 库添加到摩纳哥编辑器(代码完成)并限制可能的库?



如何将自定义 C# 程序集添加到 Monaco 编辑器,以便编辑器识别/完成我的程序集类型?

我如何选择和限制摩纳哥编辑器可以使用的 .net 库?

提前谢谢。

没有简单的方法。 .Net是一个无法用JS轻松分析的框架,特别是如果您需要读取二进制依赖项(dlls(中的所有类型。

因此,您还需要某种后端引擎(可能是WebApi(。 在 Monaco 中加载项目可能会要求后端从二进制引用中读取所有导出的类型(请参阅反射(并将它们发送到前端。

如果你希望这些事情实时改变(例如,有人创建了一个新类(,你可能会遇到更复杂的场景,你需要同时保持两者 - Monaco 编辑器中的代码和后端中的项目不断同步(参见 Roslyn(。

如果只需要支持 read + 类型,可以执行以下操作:

  1. 使用 https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-completion-provider-example 注册完成提供程序。
  2. 还可以在后端加载项目并使用 C# 读取所有引用。
  3. 在提供完成项中 - 您将获得插入符号位置
  4. 将文件和坐标发送到后端。
  5. 后端读取该位置的符号,推断其类型(可能使用 Roslyn(
  6. 使用反射向下跟踪和反映类型。
  7. 发回此类型的成员。

如果您的Monaco编辑器不是只读的 - 您还需要同步后端和前端,因此位置始终匹配。

最新更新