Не удается получить Microsoft.VisualBasic.dll для Mono 2.10

Я пытаюсь перенести библиотеку .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, который я видел в этом предыдущем сообщении, не понравился мне).

Любая помощь очень ценится.

Ответ 2

Вы можете попытаться обмануть Cudafy, создав собственную версию DLL.

Используйте рефлектор или проверьте здесь, чтобы увидеть интерфейс

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();

Ответ 3

Вы можете использовать инструмент MoMA, чтобы проверить, насколько совместимым моном является ваш проект.

В вашем конкретном случае метод, который вам нужен, не реализован, если это единственное, что препятствует работе вашего проекта, вы можете его реализовать, а также создать и предоставить свою собственную MS.VB.dll до тех пор, пока моно не выпустит версию с изменение в нем. После того, как вы построили моно-базовый, его просто установить на любую машину (с уже установленным моно), просто запустите:

gacutil -i path/to/MS.VB.dll

и dll будет установлена ​​в gac.