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

2023-12-12

我们正在尝试在 OS X 上的命令行上运行一个简单的 Mono 脚本。大多数脚本对我们来说工作正常,但是一旦我们尝试使用 System.Numerics,我们就会收到“错误 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.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 一起工作吗?


如果您使用 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, and 4.5作为 -sdk 选项的可能值。如果没有,则框架未正确安装;我曾经有过这样的经历,我认为/Library/Frameworks/Mono.framework/Versions/Current指向错误的目录;第二次安装解决了这个问题。

操纵pkg-config应该是没有必要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让 System.Numerics 在 OS X 上使用命令行 Mono (mcs) 的相关文章

随机推荐