Win7 開発マシンに Mono フレームワークをダウンロードしてインストールしました。次に、こちらの手順に従って、 Visual Studio 2010 で .NET の代わりに Mono フレームワークをターゲットにできるようにしました。次に、VB を使用して、プロジェクトの Advanced Compile Options でターゲット フレームワーク セット "Mono 2.10.8 profile" を使用して、このテスト コンソール アプリを作成します。
Dim runningOnMono As Boolean = Not IsNothing(Type.GetType("Mono.Runtime"))
Console.WriteLine("Running on Mono = " & runningOnMono.ToString)
これを Win7 開発マシンで実行すると、False が返されます。つまり、Mono では実行されません。Mono のみがインストールされている Linux マシンでプログラムを実行すると、True が返されます。
VS と intellisense で Mono フレームワークの一部を参照できますが、この呼び出しを行うと、次のようになります。
Dim monoinf As New Mono.Unix.UnixDriveInfo("g:")
私はこの例外を受け取ります:
===================================
FileNotFoundException が処理されませんでした: ファイルまたはアセンブリ 'Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
===================================
Mono.Posix.dll バージョン 4.0.0.0は、VS Mono プロファイル専用に作成されたディレクトリを含む多くのディレクトリに存在します。テストアプリのディレクトリにコピーしてみました。
Win7ボックスへのモノラルインストールがめちゃくちゃなだけですか? インテリセンスが機能するのに、 Type.GetType("Mono.Runtime") の呼び出しが Nothing を返すのはどうしてでしょうか?
Mono をターゲットにしようとしている理由は、クラス System.IO.DriveInfo が Mono で動作しないためです。そのため、Windows と Linux で実行したい場合は Mono.Unix.UnixDriveInfo を使用する必要があると思います。USB フラッシュ ドライブの空き容量を確保する必要があります。
助けてくれてありがとう。