0

我一直在尝试使用 Mono 将基于 Windows 构建的 .NET 库移植到 Ubuntu 11.04。该库使用 .NET 4.0,因此 Ubuntu 11.04 标准的 mono (2.6.7) 版本不会削减它。具体来说,我正在尝试使用 Microsoft.VisualBasic.Devices.Computer.Info.TotalPhysicalMemory。我到处搜索安装 Microsoft.VisualBasic.dll 的包或并行构建脚本,但它们都没有。

理想情况下,我想找到一种两全其美的方法,即支持 .NET 4.0 的 Mono 和 Microsoft.VisualBasic,这样就不必修改代码。我会选择使用另一种方法的替代方法(尽管我在上一篇文章中看到的 P/Invoke 方法对我没有吸引力)。

任何帮助是极大的赞赏。

4

3 回答 3

1

看起来获得 VB.dll 也无济于事。这个方法在 Mono 中没有实现:

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

于 2011-07-10T23:32:29.027 回答
1

您可以尝试通过创建自己的 DLL 版本来欺骗 Cudafy。

使用反射器或查看此处查看界面

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

您可以在 Mono 上使用性能计数器来实际获取内存量;

var pc = new PerformanceCounter("Mono Memory", "Total Physical Memory");
var mem = pc.RawValue();
于 2012-07-13T14:42:05.477 回答
0

您可以使用MoMA 工具检查您的项目的单声道兼容性。

在您的特定情况下,您需要的方法没有实现,如果这是阻止您的项目工作的唯一原因,您可以实现它,并构建并提供您自己的 MS.VB.dll,直到 mono 发布一个带有更改的版本. 一旦你构建了 mono-basic,它就可以很容易地安装在任何机器上(已经安装了 mono),只需运行:

gacutil -i 路径/到/MS.VB.dll

并且 dll 将被安装到 gac 中。

于 2011-07-11T20:17:47.703 回答