我希望给用户提供基于我的类层次结构(内存中的对象)的自定义报告的机会。像VBA这样的脚本语言:Visual Basic for Application。希望在运行时进行评估。
我希望用户能够根据仅标有特定属性的一些可用受限对象动态创建自己的报告。给用户创建宏的可能性,其中他具有与VBA-Excel中相似的模型:Application/Workbook/WorkSheet/Range/...但是使用我的特定选定对象。
然后,他将能够使用智能感知并向其应用程序添加自己的功能。
更新:对我来说非常重要的是,编辑器最好是应用程序本身的一部分,以便脚本知道它应该与之交互的所有环境(命名空间、对象等)。否则,在单独的进程中具有脚本引擎/编辑器将迫使应用程序成为“单实例”应用程序或创建一个棘手的方式将脚本钩接到特定运行应用程序进程。
它是否存在,并如何将其插入到.NET应用程序中?
已经提出了4个解决方案:
我希望用户能够根据仅标有特定属性的一些可用受限对象动态创建自己的报告。给用户创建宏的可能性,其中他具有与VBA-Excel中相似的模型:Application/Workbook/WorkSheet/Range/...但是使用我的特定选定对象。
然后,他将能够使用智能感知并向其应用程序添加自己的功能。
更新:对我来说非常重要的是,编辑器最好是应用程序本身的一部分,以便脚本知道它应该与之交互的所有环境(命名空间、对象等)。否则,在单独的进程中具有脚本引擎/编辑器将迫使应用程序成为“单实例”应用程序或创建一个棘手的方式将脚本钩接到特定运行应用程序进程。
它是否存在,并如何将其插入到.NET应用程序中?
已经提出了4个解决方案:
我还发现了:
- ScriptCs
- RoslynPad
- Code Project - Anoop Madhusudanan article: C# as a Scripting Language in Your .NET Applications Using Roslyn
但我想知道哪一个可以满足所有需求(或大部分需求):
- 具有智能感知的编辑器
- 用户可以访问当前正在运行的进程对象模型(应用程序作为全局对象,所有相关对象通过应用程序属性访问)。可选但非常好的功能:不一定是每个公共属性,只有标记有特定属性的属性。
- 交互式环境,可以逐步进行调试、断点等操作
- 编辑器/调试器免费授权再分发
- 不是必需的,但最好使用C#语言
实际测试:
- 我尝试评估#2,但没有包含所有模块的VS项目示例(似乎有点难以组装)。
- 我目前正在评估#6,它似乎工作正常(我纠正了一个小错误)。它似乎符合大多数要求,但不符合#3。但它似乎是迄今为止最接近我的需求的解决方案。它还使用Roslyn,这对我来说是一个积极因素,因为它是微软编译器,应该始终保持最新。
我仍在等待任何人的反馈,无论是其他更好的解决方案还是任何建议,以帮助我做出更好的决策。