2011-07-10 7 views
0

Windows用の.NETライブラリをMonoを使用してUbuntu 11.04に移植しようとしています。ライブラリは.NET 4.0を使用しているため、Ubuntu 11.04の標準であるmono(2.6.7)のバージョンはそれを切断しません。具体的には、Microsoft.VisualBasic.Devices.Computer.Info.TotalPhysicalMemoryを使用しようとしています。私は、Microsoft.VisualBasic.dllをインストールするパッケージや並列ビルドスクリプトについては、高値と低値を検索しましたが、どれも実行しません。Mono 2.10用Microsoft.VisualBasic.dllを取得できません

理想的には、コードを変更する必要がないように、.NET 4.0サポートとMicrosoft.VisualBasicの両方の世界を最大限に活用する方法を見つけることが理想的です。私は別の方法を使用する代わりに解決する(ただし、私はthisで見たP/Invokeメソッドは以前の投稿は私に魅力がない)。

ご協力いただきまして誠にありがとうございます。

+0

なぜTotalPhysicalMemoryが必要ですか?アプリケーションは、物理メモリのサイズを知っている必要はありません。それは診断のためだけですか?プロパティに対する依存関係を削除するか、またはLinux固有の方法でLinuxシステム上のメモリサイズを調べることができます。 LinuxはWin32ではないので、Win32 APIを呼び出すことは役に立ちません。 – dtb

+0

私はTotalPhysicalMemoryを使用するコードを記述しませんでした。これはCudafy.NETライブラリのもので、GPUをエミュレートしてデバイスのプロパティを設定するときに使用します。 – jalane

+0

Cudafy.NETはMonoと連携するように設計されていないようです。 Microsoft.VisualBasicアセンブリへの依存はおそらく氷山の一角に過ぎません。 Monoで動作する別のライブラリを探すか、Cudafy.NET開発者に連絡してMonoのサポートを依頼してください。 – dtb

答えて

0

あなたはモノがあなたのプロジェクトのためにどのように互換性をチェックするためにMoMA toolを使用することができます。

具体的なケースでは、必要な方法は実装されていません。プロジェクトが動作しないようにするには、実装し、実装して、独自のMS.VB.dllを作成して提供してください。その変化。 -iパスます。gacutil

// MS.VB.dll

とdllが可能になるために:あなたは一塩基建てたら、それは、単に実行(モノ既にインストールして)任意のマシンにインストールするのは簡単ですガックにインストールされています。

1

独自のバージョンのDLLを作成してCudafyをだますことができます。

使用リフレクタやインタフェースあなたが実際にメモリの量を取得するために、モノにパフォーマンスカウンタを使用することができます

https://github.com/mono/mono-basic/blob/master/vbruntime/Microsoft.VisualBasic/Microsoft.VisualBasic.Devices/ComputerInfo.vb

を見るにはこちらをご確認ください。

var pc = new PerformanceCounter("Mono Memory", "Total Physical Memory"); 
var mem = pc.RawValue(); 
関連する問題