代码完成/用于嵌入式IronPython脚本的语言服务器

时间:2020-11-02 13:17:42

标签: c# ironpython python-language-server

我有一个应用程序,可以将某些c#对象暴露给嵌入式IronPython解释器,如下所示:

using IronPython.Hosting;

namespace ironpy
{
    public class Foo
    {
        public void bar(string message)
        {
            System.Console.WriteLine(message);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var engine = Python.CreateEngine();
            var scope = engine.CreateScope();

            var test = new Foo();

            scope.SetVariable("foo", test);

            string code = "foo.bar('Hello')";

            engine.Execute(code, scope);
        }
    }
}

实际上,python源代码来自运行时加载的文本文件。

在VSCode或其他编辑器中编辑这样的源文件时,提供代码完成功能的语言服务器显然不知道将要使用的功能。因此,您无需执行任何代码完成操作,也不会到处出现烦人的错误代码。

是否可以为其中一种常用语言服务器编写某种插件/提示/启动文件,以告诉他们有关导出的C#API的信息,以便在编辑python源文件时完成工作代码?

2 个答案:

答案 0 :(得分:0)

同时,我找到了解决问题的方法:IronPython存根文件

https://github.com/gtalarico/ironpython-stubs

答案 1 :(得分:0)

我认为,定义.py文件并在其中执行代码是最好的方法。然后您可以执行如下的.py文件;

https://stackoverflow.com/a/11779234/4582992

相关问题