2013-05-22 12 views
2

내가 DMC를 함께 here에서 다음 예제를 컴파일하기 위해 노력하고있어에가 system.data.dll을 찾을 수 없습니다 :모노 (나는 모두를 시도 ... 그리고 gmcs) 리눅스

using System; 
using System.Data; 
using Mono.Data.Sqlite; 

public class Example 
{ 

    static void Main() 
    { 
     string cs = "URI=file:test.db"; 

     using(SqliteConnection con = new SqliteConnection(cs)) 
     { 

      con.Open(); 

      DataTable table = new DataTable("Friends2"); 

      DataColumn column; 
      DataRow row; 

      column = new DataColumn(); 
      column.DataType = System.Type.GetType("System.Int32"); 
      column.ColumnName = "Id"; 
      table.Columns.Add(column); 

      column = new DataColumn(); 
      column.DataType = Type.GetType("System.String"); 
      column.ColumnName = "Name"; 
      table.Columns.Add(column); 

      row = table.NewRow(); 
      row["Id"] = 1; 
      row["Name"] = "Jane"; 
      table.Rows.Add(row); 

      row = table.NewRow(); 
      row["Id"] = 2; 
      row["Name"] = "Lucy"; 
      table.Rows.Add(row); 

      row = table.NewRow(); 
      row["Id"] = 3; 
      row["Name"] = "Thomas"; 
      table.Rows.Add(row); 

      string sql = "SELECT * FROM Friends2"; 

      using (SqliteDataAdapter da = new SqliteDataAdapter(sql, con)) 
      { 
       using (new SqliteCommandBuilder(da)) 
       { 
        da.Fill(table); 
        da.Update(table); 
       } 
      } 

      con.Close(); 
     } 
    } 
} 

내가 사용한 시도하고 컴파일 얻을 CL 인수를 다음

dmcs sqlite8.cs -r:Mono.Data.Sqlite.dll, System.Data.dll 
gmcs sqlite8.cs -r:Mono.Data.Sqlite.dll, System.Data.dll 

을 그리고 다음과 같은 오류가 자신을 나타내 :

sqlite8.cs(2,14): error CS0234: The type or namespace 'Data' does not exists in the namespace 'System'. Are you missing an assembly reference? 

또는

error CS2001: Source file 'System.Data.dll' could not be found 
Compilation failed: 1 error(s), 0 warnings 

그래서 Mono는 System.Data 참조를 찾을 수 없습니다. 이 문제를 해결하려면 어떻게해야합니까? 필자는 C#을하는 데 익숙하지만 CLI Mono 컴파일은 새로운 것입니다. 오류가 "소스 파일"을 언급하는 것이

mcs sqlite8.cs -r:Mono.Data.Sqlite.dll -r:System.Data.dll 

주의 사항 :

+3

Upvoted. 독자 분께 downvote로 가려한다면, 이유를 설명해주십시오. 이것은 완전히 이해할 수있는 질문입니다. –

답변

2

당신은 하나의 -r 옵션을 사용하여 여러 어셈블리를 전달할 수 없습니다, 당신과 같은 각 참조 -r를 제공해야합니다.

+1

수상자, 닭고기 만찬. 감사! – nerdenator

+3

여러 어셈블리를 전달할 수 있습니다. 그러나 쉼표 구분 기호 뒤에 공백을 사용할 수 없습니다. –

+0

답변을 주신 Jester에게 감사드립니다. –