如何为我在C#中的应用程序提供一个等效的ExcelVBA环境

本文关键字:一个 环境 ExcelVBA 应用程序 | 更新日期: 2023-09-27 18:26:42

我想让用户有机会根据我的类层次结构(内存中的对象)创建自己的报告。类似VBA的脚本语言:Visual Basic for Application。将在运行时评估的东西。

我希望用户能够基于一些仅标记有特定属性的可用受限对象动态创建自己的报告。为用户提供创建宏的可能性,使其具有与VBA Excel中类似的模型:Application/Workbook/WorkSheet/Range/。。。而是使用我选择的特定对象。

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

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

它存在吗?如何将其插入.net应用程序?

已经提出了4种解决方案:

  1. IronRuby
  2. CsScript
  3. WinWrap
  4. Windows脚本主机(WSH)

我还发现:

  1. ScriptC
  2. RoslynPad
  3. 代码项目-Anoop Madhusudanan文章:使用Roslyn在.NET应用程序中使用C#作为脚本语言

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

  1. 带Intellisense的编辑器
  2. 用户可以访问当前正在运行的流程对象模型(应用程序为全局,以及通过应用程序属性访问的所有相关对象)。可选但非常好:不一定是每个公共属性,只标记具有特定属性的属性
  3. 交互式环境逐步启用,调试,断点
  4. 编辑器/调试器获得免费重新分发许可
  5. 不需要,但最好使用C#语言

实际测试:

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

我仍在等待任何人的反馈,无论是其他更好的解决方案还是任何建议,以帮助我做出更好的决定。

如何为我在C#中的应用程序提供一个等效的ExcelVBA环境

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

我意识到Oleg Shilo(CS Script的作者)对Roslyn(2014-10-21)没有准备好帮助我进行智能感知这一事实是正确的。但我认为这应该很快发生。我认为等待是值得的。但它可以将代码编译并运行到我想在其中运行测试的相同运行应用程序中

尽管任何其他方法现在都可能效果更好。我认为像RoslynPad这样的解决方案更接近于满足我需求的理想解决方案。大多数其他提出的解决方案,适用于通用脚本,但不如RoslynPad适用于应用程序内部脚本。。。至少在我看来是这样。

然后,我修复了RoslynPad中的一些小问题,并将其连接到最新的AvalonEdit,它还修复了其他一些自动完成的问题(但仍然很少有错误)。

我现在得到的需求填补如下:

  • #1部分(当Roslyn支持并记录时,已准备好全部)
  • #2满
  • #3否(当Roslyn支持并记录时,已准备就绪)
  • #4满
  • #5满

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

相关文章: