web-dev-qa-db-ja.com

コンパイルされたデフォルトの.NETライブラリが欠落している-System.Objectが定義またはインポートされていない

ここにあるガイドに従って、OS X Mavericksでモノをコンパイルしました: http://www.mono-project.com/docs/compiling-mono/mac/

Xbuildを使用してアプリケーションをコンパイルすると、次のエラーが発生します。

CSC: error CS0518: The predefined type `System.Object' is not defined or imported
CSC: error CS0518: The predefined type `System.ValueType' is not defined or imported
CSC: error CS0518: The predefined type `System.Attribute' is not defined or imported
CSC: error CS0518: The predefined type `System.Int32' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt32' is not defined or imported
CSC: error CS0518: The predefined type `System.Int64' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt64' is not defined or imported
CSC: error CS0518: The predefined type `System.Single' is not defined or imported
CSC: error CS0518: The predefined type `System.Double' is not defined or imported
CSC: error CS0518: The predefined type `System.Char' is not defined or imported
CSC: error CS0518: The predefined type `System.Int16' is not defined or imported
CSC: error CS0518: The predefined type `System.Decimal' is not defined or imported
CSC: error CS0518: The predefined type `System.Boolean' is not defined or imported
CSC: error CS0518: The predefined type `System.SByte' is not defined or imported
CSC: error CS0518: The predefined type `System.Byte' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt16' is not defined or imported
CSC: error CS0518: The predefined type `System.String' is not defined or imported
CSC: error CS0518: The predefined type `System.Enum' is not defined or imported
CSC: error CS0518: The predefined type `System.Delegate' is not defined or imported
CSC: error CS0518: The predefined type `System.MulticastDelegate' is not defined or imported
CSC: error CS0518: The predefined type `System.Void' is not defined or imported
CSC: error CS0518: The predefined type `System.Array' is not defined or imported
CSC: error CS0518: The predefined type `System.Type' is not defined or imported
CSC: error CS0518: The predefined type `System.Collections.IEnumerator' is not defined or imported
CSC: error CS0518: The predefined type `System.Collections.IEnumerable' is not defined or imported
CSC: error CS0518: The predefined type `System.IDisposable' is not defined or imported
CSC: error CS0518: The predefined type `System.IntPtr' is not defined or imported
CSC: error CS0518: The predefined type `System.UIntPtr' is not defined or imported
CSC: error CS0518: The predefined type `System.RuntimeFieldHandle' is not defined or imported
CSC: error CS0518: The predefined type `System.RuntimeTypeHandle' is not defined or imported
CSC: error CS0518: The predefined type `System.Exception' is not defined or imported

OS Xでモノラルインストーラーを使用したとき、これらのエラーを受け取ったことはありません。

(完成していない機能を.NETフレームワークに追加しているため、モノを作成しています)

Autogen.shの実行結果: https://Gist.github.com/Geesu/149332f3f877c891d387 makeの実行結果: https://Gist.github.com/Geesu/4296f7d4c6c368d6986d

42
Geesu

次のような警告がある場合:

/lib/mono/4.5/Microsoft.Common.targets:  warning : Unable to find framework corresponding to the target framework moniker '.NETFramework,Version=v2.0'. Framework Assembly references will be resolved from the GAC, which might not be the intended behavior.

コマンドラインで.NET Frameworkをオーバーライドできます。

xbuild /p:TargetFrameworkVersion="v4.0"

ソリューションを変更できます。

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
14
Cat Zimmermann

Debian不安定版(Sid)でYouCompleteMe/OmniSharpServerをビルド中にこの問題に遭遇しました。起こっているのは、インストールされたバージョンのモノにはv4.5.2フレームワークアセンブリがインストールされていないことです。これは、そのソリューション/プロジェクトをビルドするときにコンパイラがデフォルトで設定するものです。

回避策は、ターゲットフレームワークのバージョンを使用可能なバージョンとして指定するか、ターゲットフレームワークのバージョンを使用可能にすることです(カスタムコンパイル中など)。

Cat Zimmermannの反応は適切です。

9
Nathan Schulte

インストーラーとホームビルドとの違いは、インストーラーがライブラリーの場所を「認識」しているのに対して、コンパイルされたライブラリーは知らないという事実です。そのため、アプリのコンパイル時にその場所を指定しない限り、問題が発生します(基本的にシステムDLLは見つかりません)。 mcs documentation を調べ、パスを指定することをお勧めします。 (編集:「-L」パラメータを使用してそれを行う必要があります。).

1
Kmtdk

行を削除すると、プロジェクトがコンパイルを開始しました

<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>

それから。

1
user1709408

この問題を解決するには、プロジェクト設定->一般->ターゲットフレームワークをMono/.NET 4.5に変更します。

それがあなたのために働くことを願っています。

0
sam

そのソリューションのすべてのプロジェクトでbinおよびobjフォルダーを削除してみてください。

これらのフォルダには、Visual Studioの新しいバージョンと互換性のない古いバージョンのVisual Studioによって生成された古いファイルがあるようです。

0
Jay Shah

論理的にこれをバックアップする方法がわかりませんが、これを数時間修正しようとした後、

Unload .net standards project

正確な問題が得られず、

reload it again

ブーム...それは働いた...それの背後にある論理的な理由がまだわからない。誰かがそうなら、以下にコメントしてください。

0
Akshay Kulkarni