【问题标题】:How to stop monodevelop add **-noconfig** compilation option?如何停止 monodevelop 添加 **-noconfig** 编译选项?
【发布时间】:2011-06-25 23:33:58
【问题描述】:

我尝试使用 MonoDevelop 2.4.1 在 Mono 2.8.2 上编译这个 moq 示例,目标是 .NET 3.5。

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 typeSystem.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 convertanonymous method' 表达式键入`System.Linq.Expressions.Expression>' (CS1503) ( moq_demo)

我完全不知道这些是什么意思。任何人都知道可能导致问题的原因吗?


编辑

我尝试用命令直接编译它

gmcs Main.cs /r:Moq.dll

并编译。所以它一定是由 MonoDevelop 引入的一些额外的编译选项引起的。通过导出 make 文件,我证实了我的猜测。这个编译命令

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

会触发编译错误。通过一一排除这些选项,我发现是-noconfig导致了所有问题。

所以问题没有变成:如何停止monodevelop添加-noconfig编译选项?

【问题讨论】:

  • 这对我来说在单声道 2.11(大约一个月前的主干单声道)和单声道 2.6.7 上构建和运行良好。你能发布更多来源吗?
  • 我试过了 - pastebin.com/rTNW5LSc 构建并运行良好。
  • 嘿,谢谢,我找到了导致问题的编译选项。

标签: mono moq


【解决方案1】:

-noconfig 选项意味着您必须在命令行上提供所有程序集引用。您的编译错误是因为您必须在 monodevelop 中添加对 System.Core 的引用以满足您使用的 lambda 表达式类型。

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

为我工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    相关资源
    最近更新 更多