我们试图在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'。”
在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一起工作?
答案 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
应将2
,4
和4.5
显示为-sdk选项的可能值。如果没有,那么框架没有正确安装;我有过一次,我认为/Library/Frameworks/Mono.framework/Versions/Current
指向了错误的目录;安装第二次固定。
操作pkg-config
应该是不必要的。