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



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

这并不太令人惊讶,并且应该可以通过适当的命令行选项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"。数字Test.cs"。这会产生"错误CS0006:元数据文件系统"。数字"无法找到".

"man MCS "建议我们可以通过在命令行中添加"-pkg:dotnet"来获取其他系统包。但是这会产生:

包dotnet在pkg-config搜索路径中找不到。也许您应该添加包含"。net"的目录。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. "数值测试。cs",我得到"错误CS0006:元数据文件"系统。数字"无法找到".

我在这一点上被难住了…你知道我还缺什么咒语吗?数字可以和mc一起用吗?

如果您使用的是Mono 2.10。因此,您必须使用dmcs而不是mcs进行编译,以启用4.0配置文件(System. x)。数字是c# 4.0+的特性)。

如果你正在使用Mono 2.11。X或3.0。那么mcs默认应该选择4.5配置文件。mcs -help应该显示2, 44.5作为-sdk选项的可能值。如果没有,那么框架没有正确安装;有一次,我认为/Library/Frameworks/Mono.framework/Versions/Current指向了错误的目录;第二次安装修复了。

不需要操作pkg-config

最新更新