2013-05-16 20 views
3

我们试图在OS X的命令行上运行简单的Mono脚本。大多数脚本对我们来说工作正常,但作为一旦我们尝试使用System.Numerics,就会得到“错误CS0234:命名空间System中不存在类型或命名空间名称`Numerics'。”无法使用System.Numerics在OS X上使用命令行单声道(mcs)

这并不令人感到意外,应该使用适当的命令行选项修复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时出错。检查上面的输出。然后

OK,我们没有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工作?

回答

2

如果您使用的是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应显示为244.5作为-sdk选项的可能值。如果没有,那么框架安装不正确;我有一次,我认为/Library/Frameworks/Mono.framework/Versions/Current指向错误的目录;安装第二次修复。

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

+0

谢谢! mcs --version显示我正在运行2.10.12.0。它有一个-sdk选项,默认为2,并假设允许4,但是当我尝试-sdk:4时,我得到一页错误。但是dmcs可以正常工作,所以我们只需要坚持,直到升级到Mono 2.11.x或更高版本。我们真的被难住了 - 感谢您的帮助! –

相关问题