如何在VS Code编辑CSharpScript时获取外部传入host对象的智能提示?
针对CSharpScript宿主对象智能提示相关问题解答
1. 能否让VS Code识别host对象实例并提供智能提示
完全可以,按以下步骤操作即可实现:
- 首先将你定义host实例的类编译为独立公开的程序集(
.dll文件),编译时勾选项目属性中的「生成XML文档文件」选项,这样智能提示还能带上你写的代码注释。 - 用户在VS Code中编辑脚本时,只需要在脚本头部添加两行声明即可:
// 引用你的host程序集,路径替换为实际的dll存放路径 #r "YourCADHost.dll" // 显式声明host变量类型,仅用于智能提示,实际运行时会被你传入的实例覆盖 var host = default(YourCADNamespace.CADHostClass); - 你可以直接把上述两行作为脚本模板的默认头部,用户不需要手动修改,也完全不会影响脚本的实际执行逻辑。
2. 现有执行方案是否是支持外部传入变量脚本智能编辑的正确路径
现有基于CSharpScript.EvaluateAsync<int>(code, opt, host)的方案是官方推荐的宿主对象注入方式,整体路径是正确的,完全可以满足需求,仅可做两处优化提升体验:
- 你在构造
ScriptOptions参数opt时,提前把host所在的程序集以及你开放给脚本调用的所有依赖程序集都加到opt.References列表中,避免用户脚本额外添加引用才能编译通过。 - 如果不想让用户额外安装VS Code和C#扩展,你可以直接在你的CAD软件中内嵌Monaco编辑器(VS Code底层使用的编辑器组件),自行配置C#补全规则,把host的所有公开成员预加载到补全列表中,实现软件内置的带智能提示的脚本编辑能力。
内容的提问来源于stack exchange,提问作者andreat
相关产品推荐
相关产品推荐

