3

Mono をダウンロードして Win 7 64bit にインストールしました

このサイトにアクセスして、指示に従いましたhttp://www.mono-project.com/Mono_Basics

mono コマンド プロンプトを開き、コンソールの hello world をコンパイルして実行しました

次に、ウィンドウ化された hello world の例をコンパイルしようとしました

gmcs hello.cs -pkg:gtk-sharp-2.0 

そして私はこれを得る

C:\Code\NoControl\Mono>gmcs hello.cs -pkg:gtk-sharp-2.0
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/pango-sharp.dll' could not be found
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/atk-sharp.dll' could not be found
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/gdk-sharp.dll' could not be found
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/gtk-sharp.dll' could not be found
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/glib-sharp.dll' could not be found
Compilation failed: 5 error(s), 0 warnings

これを修正するにはどうすればよいですか?

これは、回答されていない mono コマンド プロンプトを使用して gtk# の hello.cs をコンパイルできないという質問に似ています。

  • -pkg は Windows で動作しますか?
  • 何か特別なものをダウンロードする必要がありますか?
  • 省略されたパスは ~1.8/ に言及しており、私のバージョンの mono が 2.10.8 であることを ~10.8 のように言う必要がありますか?
4

3 に答える 3

9

これらは、問題の根本原因を指摘するのに役立つ回答でした。ただし、最も簡単な解決策は、名前にスペースが含まれていないフォルダーに Mono をインストールすることです。インストール中に、「C:\SDK\Mono」などを選択するだけです。問題は解決し、ファンキーな回避策は必要ありません。

于 2012-10-20T00:54:39.930 に答える
6

Monoが「Program Files」のサブディレクトリとしてインストールされているWindows 7で動作することがわかった回避策は、Cのルートにフォルダーを作成して、ディレクトリリンクを保持することです(たとえば、MonoLinksと呼ばれます..NBスペースなしコマンド プロンプトからこのディレクトリに移動し、ディレクトリ ジャンクションを作成して、スペースを含まない名前を付けます。

C:\MonoLinks>mklink /J Mono "C:\Program Files\Mono-2.10.8"

これには、Mono インストールの内容を表示するだけでなく、元のパス名に変換せずにプログラムからアクセスできる、Mono という名前のトラバース可能なディレクトリ (リンク) を作成する効果があります。これは、C: のルートに簡単に作成できますが、そこに汎用フォルダー (MonoLinks) があると、必要に応じて、C: のルートを乱雑にすることなく、その中に追加のリンクを作成できます。

次の作業 (インストール中に PATH 環境変数が更新されなかったので、とにかく実行する必要がありました) は、インストール内の bin ディレクトリを指すように PATH 環境変数を更新することです。コントロール パネルの [ユーザー アカウント] で、[環境変数の変更] を選択し、PATH 変数を編集して含めますC:\MonoLinks\Mono\bin(つまり、PATH プロパティのテキストの末尾にセミコロンとパスを追加します)。

于 2012-10-02T15:34:04.677 に答える
3

-pkgWindowsには欠陥があるようです。クリーンなコマンド プロンプトでProgram Files\Mono\binPATH を入力gmcsすると、構文がFiles\Mono\...停止し、パス名のスペースに関連するエラーを示す に関するエラーが表示されます。PROGRA~1\MONO\binPATH を設定するか、Mono コマンド プロンプトを使用すると、PROGRA\~1/MONO/...チルダ (など) に関連するエラーを示してそれらをエスケープし、チョークして に関するエラーが発生します。

PROGRA~232 ビットの例を示しましたが、これが 64 ビット版に適用されない理由はないことに注意してくださいProgram Files (x86)

私が見つけた回避策-r[eference]は、完全なパスを使用して、pkg-config が返す情報に基づいて個々のパラメーターを gmcs に与えることです。試す:

gmcs hello.cs -r:C:/PROGRA~2/MONO-2~1.8/lib/mono/gtk-sharp-2.0/gtk-sharp.dll
              -r:C:/PROGRA~2/MONO-2~1.8/lib/mono/gtk-sharp-2.0/gdk-sharp.dll
              ...

またはさらに良い:

gmcs hello.cs -r:"C:\Program Files (x86)\Mono-2.10.8\lib\mono\..." -r:"..."

(フルパス)

NAnt を使用している場合は、以下を削除<pkg-references/>して追加してみてください。

<include name="C:\Program Files\Mono\lib\mono\gtk-sharp-2.0\gtk-sharp.dll" />
<include name="C:\Program Files\Mono\lib\mono\gtk-sharp-2.0\gdk-sharp.dll" />
...

下に<references/>

一貫性のない不完全なパス名の使用をお許しください。この回答は、コピーアンドペーストソリューションではなく、ガイドを目的としています。

于 2012-06-13T18:41:24.020 に答える