Я пытался скомпилировать этот пример 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 опция компиляции?