Я запускаю Mono версию 2.10 на Ubuntu 11.10. Я пытаюсь запустить образец, предоставленный на http://blog.davidebbo.com/2012/02/quick-fun-with-monos-csharp-compiler-as.html, но, похоже, он нацелен на другую версию моно. Например, Compile является статическим методом в Evaluator. Я сделал следующие изменения в своем примере, но не получил его. Может ли кто-нибудь предоставить правильные изменения, и кто-нибудь знает, есть ли какая-либо информация об изменениях API в Mono.CSharp? Версия сообщает мой компилятор выглядит следующим образом:Mono.CSharp (компилятор как услуга) изменяется в версии 2.10
$ dmcs --version
Mono C# compiler version 2.10.5.0
Я составил следующий код, используя эту командную строку:
РСЧА -r: Mono.CSharp Sample.cs
И получил это предупреждение при компилирование.
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);
}
}
}
}
Согласно [this] (http://permalink.gmane.org/gmane.comp.gnome.mono.patches/178509), старый Evaluator был статичным, и новый Evaluator является членом. Мне нужно проверить мою версию dll. – kristianp