gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:39:06 24 4
gpt4 key购买 nike

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

我该如何选择和限制 Monaco Editor 可以使用的 .net 库?

提前致谢。

最佳答案

没有简单的方法。 .Net 是一个无法用 JS 轻松分析的框架,尤其是当您需要读取二进制依赖项 (dll) 中的所有类型时。
因此,您还需要某种后端引擎(可能是 WebApi )。
在摩纳哥加载项目可能会要求后端从二进制引用中读取所有导出的类型(参见 反射 )并将它们发送到前端。
如果您希望这些东西实时更改(例如,有人创建了一个新类),您可能会遇到更复杂的场景,您需要同时拥有这两者 - Monaco Editor 中的代码和后端中的项目不断同步(见罗斯林)。
如果您只需要支持 read + 类型,您可以执行以下操作:

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

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

    关于c# - 如何将 C# 库添加到 Monaco 编辑器(代码完成)并限制可能的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52911559/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com