我在乌班图11.10上台的莫诺版本2.10。 我正尝试在以下网址上进行抽样:http://blog.davidebbo.com/2007/02/quick-fun-with-monos-csharp-compiler-as.html” rel=“nofollow” http://blog.davidebbo.com 201202/quick-fun-with-monos-csharp-compiler-as.html。 但它似乎针对的是不同的单一版本。 例如,串通器是评价器的一种固定方法。 我对他的样本做了如下改动,但没有回头去。 任何人都能够作出正确的改变,任何人都知道,对莫诺的APIC有否影响。 CSharp? 我的汇编者报告的版本如下:
$ dmcs --version
Mono C# compiler version 2.10.5.0
我利用这一指挥线汇编了以下法典:
dmcs -r:Mono.CSharp Sample.cs
And got this warning when compiling.
dmcs -r:Mono.CSharp Sample.cs
Sample.cs(26,17): warning CS0219: The variable `compiledMethod is assigned but its value is never used
Compilation succeeded - 1 warning(s)
这是实施法典的结果:
$ ./Sample.exe
{interactive}(2,40): error CS1525: Unexpected symbol `namespace , expecting `end-of-file or `using
{interactive}(4,70): error CS0101: The namespace `UserCode already contains a definition for `Foo
{interactive}(4,70): (Location of the symbol related to previous error)
这是我迄今为止制定的法典:
using System;
using System.IO;
using Mono.CSharp;
using System.Reflection;
namespace Sample
{
public interface IFoo { string Bar(string s); }
class Program
{
const string code = @"
using System;
namespace UserCode
{
public class Foo : Sample.IFoo
{
public string Bar(string s) { return s.ToUpper(); }
}
}
";
static void Main(string[] args)
{
Mono.CSharp.Evaluator.Init(new string[] {} );
Evaluator.ReferenceAssembly(Assembly.GetExecutingAssembly());
var compiledMethod = Evaluator.Compile(code);
for (;;)
{
string line = Console.ReadLine();
if (line == null) break;
object result;
bool result_set;
Evaluator.Evaluate(line, out result, out result_set);
if (result_set) Console.WriteLine(result);
}
}
}
}