Ответ 1
Похоже, вам не поможет VB.dll. Этот метод не реализован в Mono:
Я пытаюсь перенести библиотеку .NET, построенную на/для Windows, на Ubuntu 11.04 с помощью Mono. Библиотека использует .NET 4.0, поэтому версия mono (2.6.7), стандартная с Ubuntu 11.04, не сокращает ее. В частности, я пытаюсь использовать Microsoft.VisualBasic.Devices.Computer.Info.TotalPhysicalMemory. Я искал высоко и низко для пакетов или параллельных скриптов сборки, которые устанавливают Microsoft.VisualBasic.dll, но ни один из них не делает.
В идеале я хотел бы найти способ получить лучшее из обоих миров, Mono с поддержкой .NET 4.0 и Microsoft.VisualBasic, чтобы код не нужно было изменять. Я бы согласился на альтернативу, которая использует другой метод (хотя метод P/Invoke, который я видел в этом предыдущем сообщении, не понравился мне).
Любая помощь очень ценится.
Похоже, вам не поможет VB.dll. Этот метод не реализован в Mono:
Вы можете попытаться обмануть Cudafy, создав собственную версию DLL.
Используйте рефлектор или проверьте здесь, чтобы увидеть интерфейс
Вы можете использовать счетчик производительности на Mono, чтобы фактически получить объем памяти;
var pc = new PerformanceCounter("Mono Memory", "Total Physical Memory");
var mem = pc.RawValue();
Вы можете использовать инструмент MoMA, чтобы проверить, насколько совместимым моном является ваш проект.
В вашем конкретном случае метод, который вам нужен, не реализован, если это единственное, что препятствует работе вашего проекта, вы можете его реализовать, а также создать и предоставить свою собственную MS.VB.dll до тех пор, пока моно не выпустит версию с изменение в нем. После того, как вы построили моно-базовый, его просто установить на любую машину (с уже установленным моно), просто запустите:
gacutil -i path/to/MS.VB.dll
и dll будет установлена в gac.