2014-10-16 46 views
3

我想讓用戶有機會根據我的類層次結構(內存中的對象)執行自己的報告。像VBA這樣的腳本語言:Visual Basic for Application。一些將在運行時進行評估的東西。如何在C#中爲我的應用程序授予用戶相應的Excel-VBA環境

我希望用戶能夠動態地創建自己的報告,基於一些可用的標記有特定屬性的限制對象。讓用戶有可能在VBA-Excel中有類似模型的地方創建宏:應用程序/工作簿/工作表/範圍/ ...,但用我的特定選定對象代替。

然後,他將能夠使用智能感知並將其自己的功能添加到其應用程序中。

更新:有一些對我來說很重要。編輯器應該最好是應用程序本身的一部分,以便腳本知道它應該與之交互的所有環境(名稱空間,對象等)。否則,在單獨的進程中使用腳本引擎/編輯器會強制應用程序成爲「單實例」應用程序,或者創建一個棘手的方式將腳本掛接到特定的正在運行的應用程序進程。

它是否存在以及如何將它連接到.net應用程序?

4的解決方案已經被提出:

  1. IronRuby
  2. CsScript
  3. WinWrap
  4. Windows Scripting Host (WSH)

我還發現:

  • ScriptCs
  • RoslynPad
  • Code Project - Anoop Madhusudanan article: C# as a Scripting Language in Your .NET Applications Using Roslyn
  • 但我不知道哪一個能適合所有的需求(或大部分):

    1. 編輯與智能感知
    2. 用戶有訪問當前運行的進程對象模型(Application作爲全局及其通過應用程序訪問的所有相關對象rties)。可選但很好擁有:不一定每個公共屬性,只有具有特定屬性的標記屬性。
    3. 交互式環境中實現分步實施,調試,斷點,...
    4. 許可免費再分配
    5. 編輯器/調試
    6. 並非必需,但優選使用C#語言

    實際測試:

    • 我試着評估#2,但沒有VS項目樣本與所有模塊一起工作(這似乎有點複雜的組裝)。
    • 我目前評估#6似乎工作正常(我糾正了一個小錯誤)。它似乎適合大多數點,但#3。但它似乎與我的需求最接近。它也使用了Roslyn,這在我看來是一個積極的方面,因爲它是微軟的編譯器,它應該始終是最新的。

    我仍然在等待任何人的任何反饋或其他更好的解決方案或任何建議來幫助我做出更好的決定。

    +0

    特別想要VBA嗎? – Maz 2014-10-16 14:32:18

    +0

    @馬茲,不,不一定,任何相當的東西都不錯。 – 2014-10-16 14:33:27

    +0

    我會看看嵌入ironpython。關於這個主題有很多教程,它應該做你想要的東西 – Maz 2014-10-16 14:37:14

    回答

    0

    經過一番思考,試驗和錯誤。我的需求變得更加清晰,我對Roslyn發展現狀的理解也更好。

    我意識到Oleg Shilo(CS-Script的作者)對於Roslyn尚未準備好(2014-10-21)幫助我進行智能感知這一事實是正確的。但我認爲它應該發生得比較快。我認爲這值得等待。但它可以將代碼編譯並運行到我想要運行測試的同一個正在運行的應用程序中。

    雖然現在可能有更好的方法可以更好地工作。我認爲像RoslynPad這樣的解決方案將更接近我的需求的理想解決方案。大多數其他建議的解決方案適用於一般腳本,但不如RoslynPad適用於內部應用程序自己的腳本...至少根據我的意見。

    然後,我在RoslynPad中修復了一些小問題,並將其與最新的AvalonEdit綁定,這也修復了其他一些與自動完成相關的問題(但仍有一些缺陷)。

    我現在就需要填補,因爲這:

    • #1部分(準備充分時羅斯林將支持並記錄它)
    • #2全
    • #3號(準備充分當羅斯林將支持並記錄它)
    • #4全
    • #5全部

    非常感謝所有給我的想法,鏈接和非常好的建議。

    相關問題