C# 如何为用户在C中的应用程序提供等效的Excel VBA环境#

C# 如何为用户在C中的应用程序提供等效的Excel VBA环境#,c#,vba,runtime,intellisense,scripting-language,C#,Vba,Runtime,Intellisense,Scripting Language,我想让用户有机会根据我的类层次结构(内存中的对象)编写自己的报告。一种脚本语言,如VBA:Visual Basic for Application。将在运行时进行评估的内容 我希望用户能够根据一些可用的受限对象动态创建自己的报告,这些受限对象仅标记有特定属性。为用户提供创建宏的可能性,使其具有与VBA Excel中类似的模型:应用程序/工作簿/工作表/范围/。。。而是使用我的特定选定对象 然后,他就能够使用intellisense并将其自身的功能添加到应用程序中 更新:在我看来,有些事情非常重要

我想让用户有机会根据我的类层次结构(内存中的对象)编写自己的报告。一种脚本语言,如VBA:Visual Basic for Application。将在运行时进行评估的内容

我希望用户能够根据一些可用的受限对象动态创建自己的报告,这些受限对象仅标记有特定属性。为用户提供创建宏的可能性,使其具有与VBA Excel中类似的模型:应用程序/工作簿/工作表/范围/。。。而是使用我的特定选定对象

然后,他就能够使用intellisense并将其自身的功能添加到应用程序中

更新:在我看来,有些事情非常重要。编辑器最好是应用程序本身的一部分,以便脚本了解它应该与之交互的所有环境(名称空间、对象等等)。否则,在单独的进程中使用脚本引擎/编辑器将迫使应用程序成为“单实例”应用程序,或者创建一种巧妙的方法将脚本挂接到特定的正在运行的应用程序进程。

它是否存在以及如何将其插入.net应用程序

提出了4种解决办法:

  • 我还发现:

  • 但我想知道哪一个能满足所有需求(或大部分需求):

  • 智能感知编辑器
  • 用户可以访问当前运行的流程对象模型(应用程序作为全局对象,其所有相关对象通过应用程序属性访问)。可选但非常好:不一定是每个公共属性,只有带有特定属性的标记属性
  • 交互式环境支持分步调试、断点等
  • 获得免费重新分发许可的编辑器/调试器
  • 不需要,但最好使用C语言
  • 实际测试:

    • 我试图评估#2,但没有VS项目示例,所有模块都在一起工作(组装起来似乎有点复杂)
    • 我目前评估了#6,它似乎运行良好(我纠正了一个小错误)。这似乎符合大多数观点,但不符合第三点。但这似乎是最接近我的需要了。它还使用了Roslyn,这在我看来是一个积极的方面,因为它是Microsoft编译器,应该始终是最新的

    我仍在等待任何人的反馈,他们提供了其他更好的解决方案或建议,以帮助我做出更好的决定。

    经过一些思考、尝试和错误。我的需求变得更加清晰,我对Roslyn发展现状的理解也更加清晰

    我意识到Oleg Shilo(CS脚本的作者)说得对,Roslyn还没有准备好(2014-10-21)帮我做intellisense。但我认为这应该很快发生。我认为值得等待。但它可以将代码编译并运行到我想要在其中运行测试的同一个运行应用程序中

    尽管目前任何其他方法都可能效果更好。我认为像RoslynPad这样的解决方案更接近于满足我需求的理想解决方案。大多数其他建议的解决方案,对于一般脚本来说不错,但对于内部应用程序自己的脚本来说不如RoslynPad好。。。至少在我看来是这样

    然后,我修复了RoslynPad中的一些小问题,并将其与最新的AvaloneEdit挂钩,该软件还修复了自动完成的一些其他问题(但仍有一些bug)

    我现在得到满足的需求如下:

    • #1部分(当Roslyn提供支持并记录时,准备全部)
    • #2满
    • #3个(当Roslyn提供支持和记录时,准备就绪)
    • #4满
    • #5满

    非常感谢所有给我提供想法、链接和非常好的建议的人。

    你特别想要VBA吗?@Maz,不,不一定,任何等效的东西都可以。我会考虑嵌入ironpython。有很多关于这个主题的教程,它应该做你想做的want@Maz,听起来不错,我刚刚也发现了。你能把你的评论变成一个答案吗?我仍然不确定CS脚本是否更可取,因为它看起来更像C,我正在寻找建议…:-)Windows脚本主机允许您在运行时使用VBScript/JScript,将具有固定名称的对象实例直接导出到C#中的脚本文件中(使用ComVisible()显示隐藏成员很简单)。没有集成的IDE,但我提到它是因为VBScript对于新手来说非常简单。