2011-06-24 5 views
3

私は、.NET 3.5をターゲットに、モノ2.8.2でこのMOQの例をコンパイルしようとした、MonoDevelopの2.4.1monodevelop add ** - noconfig **コンパイルオプションを停止する方法?

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): Error CS1660: Cannot convert lambda expression' to non-delegate type System.Linq.Expressions.Expression>' (CS1660) (moq_demo)

/home/rupert/Projects/moq_demo/moq_demo/Main.cs(30,30): Error CS1502: The best overloaded method match for `Moq.Mock.Setup(System.Linq.Expressions.Expression>)' has some invalid arguments (CS1502) (moq_demo)

/home/rupert/Projects/moq_demo/moq_demo/Main.cs(30,30): Error CS1503: Argument #1' cannot convert anonymous method' expression to type `System.Linq.Expressions.Expression>' (CS1503) (moq_demo)

私は完全にしましたこれらの手段が何をするのか分かりません。問題の原因は誰でも知ることができますか?


編集

私は、コマンド

gmcs Main.cs /r:Moq.dll

と直接それをコンパイルしようとしましたが、それがコンパイルされました。したがって、MonoDevelopによって導入されたいくつかの追加のコンパイルオプションによって引き起こされているに違いありません。ファイルをエクスポートすることで、私の推測を確認しました。このコンパイルコマンド

gmcs -noconfig -codepage:utf8 -warn:4 -out:bin/Release/moq_demo.exe -target:exe './Main.cs' './AssemblyInfo.cs' -r:System -r:Moq.dll

コンパイルエラーが発生します。これらのオプションを1つずつ削除すると、-noconfigという問題が発生しています。

問題はありませんでした:モノデベロップを停止する方法-noconfigコンパイルオプション?

+0

これは、モノラル2.11(約1ヶ月前のトランクモノ)とモノラル2.6.7で私にとってうまく構築されています。 もっと元を投稿できますか? – IanNorton

+0

私はこれを試しました - http://pastebin.com/rTNW5LScビルドして正常に動作します。 – IanNorton

+0

ねえ、ありがとう、問題を引き起こしたコンパイルオプションが見つかりました。 – ablmf

答えて

2

-noconfigオプションは、コマンドラインですべてのアセンブリ参照を指定する必要があることを意味します。コンパイルエラーは、使用したラムダ式の型を満たすために、monodevelopでSystem.Coreへの参照を追加する必要があるためです。

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

は私のために働きます。

+0

ええ、System.Coreへの参照を追加すると問題が解決しました! – ablmf

関連する問題