2013-05-16 52 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或更高版本。我們真的被難住了 - 感謝您的幫助! –

相關問題