Can';不要让System.Numerics在OSX上与命令行Mono(mcs)一起工作

Can';不要让System.Numerics在OSX上与命令行Mono(mcs)一起工作,mono,pkg-config,Mono,Pkg Config,我们正在尝试在OS X上的命令行上运行一个简单的Mono脚本。大多数脚本对我们来说都很好,但一旦我们尝试使用System.Numerics,我们就会得到“错误CS0234:名称空间系统中不存在类型或名称空间名称'Numerics' 这并不奇怪,应该可以通过mcs的适当命令行选项修复,再加上正确设置PKG_CONFIG_路径。。。但这就是我们被难住的地方。首先,这里是脚本,以便您可以在家中跟随: using System; using System.Numerics; public static

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

这并不奇怪,应该可以通过mcs的适当命令行选项修复,再加上正确设置PKG_CONFIG_路径。。。但这就是我们被难住的地方。首先,这里是脚本,以便您可以在家中跟随:

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'

“manmcs”建议我们可以通过在命令行中添加“-pkg:dotnet”来获得其他系统包。但这会产生:

在pkg config搜索路径中未找到包dotnet。也许 您应该将包含“dotnet.pc”的目录添加到 PKG_CONFIG_PATH环境变量未找到包“dotnet”错误 CS8027:运行pkg config时出错。检查上述输出

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

export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/
这修复了CS8027;但我们还是得到了我们开始使用的CS0234。如果我将-pkg和-r组合起来,例如“mcs-pkg:dotnet-r:System.Numerics Test.cs”,我会得到“error CS0006:Metadata file`System.Numerics'找不到”


我在这一点上被难住了。。。你知道我缺少什么咒语来构建系统吗?数字与mcs一起工作吗?

如果你使用的是Mono 2.10.x,你必须使用
dmcs
而不是
mcs
来编译,以启用4.0配置文件(System.Numerics仅是一个C#4.0+功能)

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

不需要操纵
pkg配置

谢谢!mcs——版本显示我正在运行2.10.12.0。它确实有一个-sdk选项,默认为2,并且应该允许4,但是当我尝试使用-sdk:4时,我会看到一页错误。但是dmcs工作得很好,所以在升级到Mono 2.11.x或更高版本之前,我们将坚持这一点。我们在这件事上真的被难住了——谢谢你的帮助!