3

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 で動作させるために欠けている呪文は何か分かりますか?

4

1 に答える 1

2

Mono 2.10.x を使用している場合は、4.0 プロファイルを有効にするのでdmcsはなく、コンパイルする必要がありmcsます (System.Numerics は C# 4.0+ の機能のみです)。

Mono 2.11.x または 3.0.x を使用している場合mcs、デフォルトで 4.5 プロファイルを選択する必要があります。-sdk オプションの可能な値として、、、およびをmcs -help表示する必要があります。そうでない場合は、フレームワークが正しくインストールされていません。私はかつてそれを持っていましたが、それは間違ったディレクトリを指していると思います。2回目のインストールで修正されました。244.5/Library/Frameworks/Mono.framework/Versions/Current

操作pkg-configは不要なはずです。

于 2013-05-19T03:54:07.103 に答える