2

Linux で mono を使用してプロジェクトをコンパイルしようとしています。私のコマンドは次のようになります...

gmcs  Pages/UserProfile.cs   Properties/AssemblyInfo.cs   queues.cs   watch_editor.cs Class1.cs -define:USE_SQLITE -r:System -r:System.Collections -r:System.Collections.Generic -r:System.Collections.ObjectModel -r:System.Collections.Specialized -r:System.Configuration

しかしずっと長い。そして私は出力を得る

error CS0006: cannot find metadata file `System.Collections'
error CS0006: cannot find metadata file `System.Collections.Generic'
error CS0006: cannot find metadata file `System.Collections.ObjectModel'
...

どうすればこれを解決できますか?

また、逆の方法で試してみたところ(以下)、同じエラーメッセージが最後に.dllで表示されました

gmcs   -define:USE_SQLITE -r:System.dll -r:System.Collections.dll  -r:System.Web.UI.WebControls CommentCenter.cs   cookies.cs   db.cs   Default.aspx.cs 
4

1 に答える 1

8

アセンブリと名前空間を混同しています。System.dll などのアセンブリは、複数の名前空間に型を含めることができるバイナリ ライブラリ ファイルです。名前空間は複数のアセンブリに分割でき、アセンブリ名は名前空間とまったく一致する必要はありません。

-r はアセンブリを参照するためのものです。名前空間を参照する必要はありません。

これらの名前空間のほとんどのクラスが mscorlib (既定で参照されます) または System.dll にあることを考えると、おそらく必要なだけです。

gmcs  Pages/UserProfile.cs   Properties/AssemblyInfo.cs   queues.cs   watch_editor.cs Class1.cs -define:USE_SQLITE -r:System

MonoDevelop などの IDE を使用することを強くお勧めします。興味があれば、それが生成するコンパイラ コマンドを表示できます。

于 2010-05-22T04:17:46.377 に答える