1

我已将 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 闪存驱动器的可用空间。

谢谢你的帮助。

4

1 回答 1

1

您已经按照博客文章定位了 Mono,但您应该使用 mono.exe 在 Mono 命令提示符下启动可执行文件(例如 test.exe),

mono.exe test.exe

这是在 Windows 上加载 Mono 运行时而不是 .NET Framework 的唯一方法。

于 2012-09-13T14:59:43.207 回答