Mono не может найти System.Data.dll в Linux

Я пытаюсь скомпилировать следующий пример из здесь с помощью dmcs (и 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?

or

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

Итак, Mono не может найти ссылку System.Data. Что мне делать, чтобы исправить это? Я привык делать C#, но компиляция CLI Mono для меня в новинку.


person nerdenator    schedule 22.05.2013    source источник
comment
Проголосовал. Если вы собираетесь поставить минус, дорогой читатель, объясните, почему. Это вполне понятный вопрос.   -  person Mike S    schedule 12.02.2016


Ответы (1)


Вы не можете передать несколько сборок, используя одну опцию -r, вам придется указать -r для каждой ссылки, например:

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

Обратите внимание, что в ошибке упоминается «исходный файл».

person Jester    schedule 22.05.2013
comment
Победитель-победитель, куриный ужин. Спасибо! - person nerdenator; 22.05.2013
comment
Вы можете пройти несколько сборок. Однако у вас не может быть пробела после разделителя запятой. - person Reimer Behrends; 22.05.2013
comment
Спасибо Jester за ответ. - person Niklas R.; 13.07.2017