我已将 Mono 框架下载并安装到我的 Win7 开发机器上。然后我按照此处的说明让 Visual Studio 2010 允许以 Mono 框架而不是 .NET 为目标。然后,我使用 VB 创建此测试控制台应用程序,并在项目的高级编译选项中将目标框架设置为“Mono 2.10.8 配置文件”:
Dim runningOnMono As Boolean = Not IsNothing(Type.GetType("Mono.Runtime"))
Console.WriteLine("Running on Mono = " & runningOnMono.ToString)
当我在 Win7 开发机器上运行它时,它返回 False,即不在 Mono 上运行。当我在仅安装了 Mono 的 Linux 机器上运行该程序时,它返回 True。
我可以在 VS 和智能感知工作中引用 Mono 框架的部分内容,但是当我进行此调用时:
Dim monoinf As New Mono.Unix.UnixDriveInfo("g:")
我得到这个例外:
====================================
FileNotFoundException 未处理:无法加载文件或程序集“Mono.Posix,Version=4.0.0.0,Culture=neutral,PublicKeyToken=0738eb9f132ed756”或其依赖项之一。该系统找不到指定的文件。
====================================
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 闪存驱动器的可用空间。
谢谢你的帮助。