无法让System.Numerics在OS X上使用命令行Mono(mcs)

时间:2013-05-16 23:24:48

标签: mono pkg-config

我们试图在OS X上的命令行上运行一个简单的Mono脚本。大多数脚本对我们来说都很好,但是一旦我们尝试使用System.Numerics,我们就会得到“错误CS0234:类型或命名空间名称`Numerics'在命名空间System中不存在。“

这不是太令人惊讶,应该可以使用mcs的适当命令行选项来修复,并且正确设置PKG_CONFIG_PATH ......但这是我们难以接受的地方。首先,这是脚本,所以你可以在家里跟随:

using System;
using System.Numerics;

public static class MainProgram {
    public static void Main(string[] args) {
        Console.WriteLine("Hello world!");
    }
}

接下来我们尝试了“mcs -r:System.Numerics Test.cs”。这会产生“错误CS0006:无法找到元数据文件`System.Numerics'。”

“man mcs”表示我们可以通过在命令行中添加“-pkg:dotnet”来获取其他系统包。但这会产生:

  

在pkg-config搜索路径中找不到包dotnet。也许   你应该把包含`dotnet.pc'的目录添加到   PKG_CONFIG_PATH环境变量未发现包'dotnet'错误   CS8027:运行pkg-config时出错。检查以上输出。

好的,我们没有PKG_CONFIG_PATH,所以我们尝试定义一个:

export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/

这修复了CS8027;但我们仍然得到了我们开始的CS0234。如果我将-pkg和-r组合在一起,例如“mcs -pkg:dotnet -r:System.Numerics Test.cs”,我收到“错误CS0006:无法找到元数据文件`System.Numerics'”。

我在这一点上感到难过...知道我缺少什么咒语使System.Numerics与mcs一起工作?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Mono 2.10.x,则必须使用dmcs而不是mcs进行编译才能启用4.0配置文件(System.Numerics仅适用于C#4.0+)。 / p>

如果您使用的是Mono 2.11.x或3.0.x,则默认情况下mcs应选择4.5配置文件。 mcs -help应将244.5显示为-sdk选项的可能值。如果没有,那么框架没有正确安装;我有过一次,我认为/Library/Frameworks/Mono.framework/Versions/Current指向了错误的目录;安装第二次固定。

操作pkg-config应该是不必要的。