Как остановить monodevelop добавить ** - noconfig ** вариант компиляции? - PullRequest
3 голосов
/ 24 июня 2011

Я пытался скомпилировать этот пример moq на Mono 2.8.2, нацелен на .NET 3.5., С MonoDevelop 2.4.1

using System;
using Moq;

namespace moq_demo
{
    public interface IFoo
    {
        bool DoSomething(string n);
    }

    class MainClass
    {
        public static void Main (string[] args)
        {
            var mock = new Mock<IFoo>();
            mock.Setup(foo => foo.DoSomething("ping")).Returns(true);
        }
    }
}

Я получил 3 ошибки компиляции:

/ home / rupert / Projects / moq_demo / moq_demo / Main.cs (36,36): ошибка CS1660: невозможно преобразовать lambda expression' to non-delegate type System.Linq.Expressions.Expression> '(CS1660) (moq_demo)

/home/rupert/Projects/moq_demo/moq_demo/Main.cs(30,30): Ошибка CS1502: лучшее совпадение перегруженного метода для `Moq.Mock.Setup (System.Linq.Expressions.Expression>) 'имеет недопустимые аргументы(CS1502) (moq_demo)

/ home / rupert / Projects / moq_demo / moq_demo / Main.cs (30,30): Ошибка CS1503: Аргумент #1' cannot convert выражение анонимного метода 'для типа `System.Linq.Expressions.Expression> '(CS1503) (moq_demo)

Я совершенно не представляю, что это значит.Кто-нибудь знает, что может вызвать проблему?


Редактировать

Я пытался скомпилировать его напрямую с помощью команды

gmcs Main.cs /r:Moq.dll

и он скомпилирован.Так что это должно быть вызвано некоторой дополнительной опцией компиляции, представленной MonoDevelop.По экспорту make file я подтвердил свою догадку.Эта команда компиляции

gmcs -noconfig -codepage: utf8 -warn: 4 -out: bin / Release / moq_demo.exe -target: exe './Main.cs' './AssemblyInfo.cs'-r: Система -r: Moq.dll

вызовет ошибку компиляции.Удалив эти опции по одному, я обнаружил, что -noconfig вызвал все проблемы.

Так что проблема не стала: Как остановить monodevelop add -noconfig опция компиляции?

1 Ответ

2 голосов
/ 25 июня 2011

Опция -noconfig означает, что вы должны указать все ссылки на сборки в командной строке. Ваша ошибка компиляции заключается в том, что вы должны добавить ссылку на System.Core в monodevelop, чтобы удовлетворить используемые вами типы лямбда-выражений.

$ gmcs -noconfig test.cs -r:Moq.dll -r:System.dll -r:System.Core.dll

у меня работает.

...