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」を追加することで、他のシステム パッケージを取得できることを示唆しています。しかし、それは生成します:
パッケージ dotnet が pkg-config 検索パスに見つかりませんでした。おそらく、「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 で動作させるために欠けている呪文は何か分かりますか?