簡體   English   中英

使用Mono C#編譯器作為服務(錯誤)

[英]Using the Mono C# compiler as a service (error)

我對Mono比較陌生,我正在嘗試為我的應用程序添加C#腳本功能。 我在Miguel de Icaza發現了這篇博文 將C#編譯器作為服務調用的方法是包含Mono.CSharp並使用Evaluator類,特別是Evaluate或Run方法。 在此處記錄

所以這是我的示例代碼(來自互聯網上關於這個主題的其他博客文章,是的,我已經完成了我的谷歌搜索)

using System;
using Mono.CSharp;

namespace EvalTest
{
  public class Test
  {
    static void Main(string [] args)
    {
      Mono.CSharp.Evaluator.Evaluate("using System;");
      Mono.CSharp.Evaluator.Run("using System;");
    }
  }
}

當我們嘗試編譯它時,我得到這些錯誤:

eval.cs(10,19): error CS0234: The type or namespace name `Evaluator' does not exist in the namespace `Mono.CSharp'. Are you missing an assembly reference?
eval.cs(11,19): error CS0234: The type or namespace name `Evaluator' does not exist in the namespace `Mono.CSharp'. Are you missing an assembly reference?

在使用所有Mono編譯器的Linux和OSX上也發生了同樣的事情,我甚至試過了Silverlight。 我搜索了stackoverflow的類似問題,每個人都參考了Miguel的博客文章和一些類似的示例代碼。 我錯過了什么? 我需要添加一些編譯器標志嗎? 謝謝你的幫助。

你有沒有關注這篇博文:

用法很簡單,你必須參考`gmcs.exe'程序集

這就是我對你的代碼所做的(在Test.cs中):

c:\Users\Jon\Test>copy "c:\Program Files (x86)\Mono-2.8"\lib\mono\2.0\gmcs.exe .
        1 file(s) copied.

c:\Users\Jon\Test>gmcs /r:gmcs.exe Test.cs

c:\Users\Jon\Test>mono Test.exe

Unhandled Exception: System.ArgumentException:
  The expression did not set a result
  at Mono.CSharp.Evaluator.Evaluate (System.String input) [...]
  at EvalTest.Test.Main (System.String[] args) [...]

這是公平的,它不會給出任何結果 - 它只是一個使用指令。 這工作正常:

Mono.CSharp.Evaluator.Run("System.Console.WriteLine(5 + 5);");

你錯過了裝配參考嗎?

這是95%的時候往往是正確的心理錯誤信息之一。 回到博客文章並注意這一行:

用法很簡單,你必須參考`gmcs.exe'程序集

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM