2010-11-23 1 views
2

Я загрузил файл demo-repl.zip с Miguel de Icaza's web site.Есть ли проблемы в Mono.CSharp.dll или мне что-то не хватает

Я пытался создать определенные программы, но все не работает. Mine - это простое консольное приложение.

Дело 1: напечатайте только имя, основанное на условии. Он хорошо работает

static void Main(string[] args) 
{ 
    Evaluator.Run("using System;"); 
    Evaluator.Run("using System.Linq;"); 
    Evaluator.Run("using System.Collections.Generic;"); 

    string dynamicQuery = ReplaceQuotes("List<string> names = new List<string> {'name1','name2','some thing else} ;");   
    dynamicQuery += ReplaceQuotes("foreach(string name in names)"); 
    dynamicQuery += ReplaceQuotes("if(name.Contains('name'))");    
    dynamicQuery += "Console.WriteLine(name);"; 
    Evaluator.Run(dynamicQuery); 

    Console.ReadLine(); 
} 

private static string ReplaceQuotes(string str) 
{    
      return str.Replace("'", "\""); 
} 
} 

Случай 2: Попытка же с помощью LINQ не удается

string dynamicQuery = ReplaceQuotes("List<string> names = new List<string> {'name1','name2','some thing else'} ;"); 
dynamicQuery += ReplaceQuotes("var result = from name in names where name.Contains('name') select name;"); 
dynamicQuery += ReplaceQuotes("foreach(string name in result) Console.WriteLine(name);"); 

Ошибка во время выполнения будучи

{interactive}(1,109): error CS1935: An implementation of `Where' query expressio 
n pattern could not be found. Are you missing `System.Linq' using directive or ` 
System.Core.dll' assembly reference? 
{interactive}(1,149): error CS1579: foreach statement cannot operate on variable 
s of type `object' because it does not contain a definition for `GetEnumerator' 
or is not accessible 

Случай 3: Попытка же с лямбда

string dynamicQuery = ReplaceQuotes("List<string> names = new List<string> {'name1','name2','some thing else'} ;"); 
dynamicQuery += ReplaceQuotes("names.Where(i => i.Contains('name')).ToList().ForEach(i => Console.WriteLine(i));"); 

На этот раз ошибка будучи

{interactive}(1,83): error CS1061: Type `System.Collections.Generic.List<string> 
' does not contain a definition for `Where' and no extension method `Where' of t 
ype `System.Collections.Generic.List<string>' could be found (are you missing a 
using directive or an assembly reference?) 

Я искал в сети и обнаружил, что люди просят включить System.Core и импортировать соответствующие пространства имен.

У меня уже есть эти пространства имен

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Mono.CSharp; 

Тогда что, где, почему это не так?

Благодаря

ответ

0

Добавить ссылку на System.Core и установить копию локальной истина.

2

Добавить ссылку на System.Core вашего проект или скомпилировать командную строку (-r: System.Core)

+0

Всякий раз, когда мы создаем проект в dotnet, по умолчанию добавляется ссылка system.core. – 2010-11-25 02:41:14

+0

Установите для параметра System.Core local local значение true. – Jeff 2010-12-15 02:42:49