我下载了Mono并将其安装在Win 7 64bit
上我访问了此网站,按照http://www.mono-project.com/Mono_Basics
的说明操作我打开了mono命令提示符并编译并运行了控制台hello world
然后我尝试使用
编译窗口化的hello world示例gmcs hello.cs -pkg:gtk-sharp-2.0
我得到了这个
C:\Code\NoControl\Mono>gmcs hello.cs -pkg:gtk-sharp-2.0
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/pango-sharp.dll' could not be found
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/atk-sharp.dll' could not be found
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/gdk-sharp.dll' could not be found
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/gtk-sharp.dll' could not be found
error CS0006: Metadata file `C:/PROGRA\~2/MONO-2\~1.8/lib/mono/gtk-sharp-2.0/glib-sharp.dll' could not be found
Compilation failed: 5 error(s), 0 warnings
我该如何解决这个问题?
这与cannot compile hello.cs for gtk# using mono command prompt中的问题类似,但没有回答。
答案 0 :(得分:9)
这些是指出问题根本原因的有用答案。但是,到目前为止最简单的解决方案是将Mono安装到名称中没有空格的文件夹中。安装时,只需选择“C:\ SDK \ Mono”之类的东西。问题解决了,没有必要的时髦工作。
答案 1 :(得分:6)
我已经发现在Windows 7上工作,其中Mono已作为“Program Files”的子目录安装,它是在C的根目录中创建一个文件夹来保存目录链接(例如名为MonoLinks ..注意名称中没有空格)然后,从命令提示符进入此目录并创建一个目录连接点,为其指定一个不包含空格的名称。
C:\MonoLinks>mklink /J Mono "C:\Program Files\Mono-2.10.8"
这具有创建名为Mono的可遍历目录(链接)的效果,该目录不仅将显示Mono安装的内容,而且可以被程序访问而无需转换为其原始路径名。这可以很容易地在C的根目录中创建:但是如果需要,可以在其中创建一个通用文件夹(MonoLinks),在其中创建其他链接,而不会使C:的根目录混乱。
接下来的事情(由于PATH环境变量在安装期间未更新而无论如何必须完成)是更新PATH环境变量,使其指向安装中的bin目录。
在控制面板,用户帐户中,选择更改我的环境变量并编辑PATH变量以包含C:\MonoLinks\Mono\bin
(即添加分号和PATH属性文本末尾的路径)。
答案 2 :(得分:3)
-pkg
似乎在Windows上存在缺陷。在干净的命令提示符下,如果将Program Files\Mono\bin
放在PATH上,gmcs
将会阻塞语法并提供有关Files\Mono\...
的错误,指示与路径名中的空格相关的错误。如果您将PROGRA~1\MONO\bin
放在PATH上或使用Mono命令提示符,它将阻塞并提供有关PROGRA\~1/MONO/...
的错误,指示与波浪号(等)相关的错误并将其转义。
请注意,虽然我已经提供了32位示例,但没有理由不适用于64位版本,PROGRA~2
和Program Files (x86)
。
我找到的解决方法是使用完整路径根据pkg-config返回的信息向gmcs提供单独的-r[eference]
参数。尝试:
gmcs hello.cs -r:C:/PROGRA~2/MONO-2~1.8/lib/mono/gtk-sharp-2.0/gtk-sharp.dll
-r:C:/PROGRA~2/MONO-2~1.8/lib/mono/gtk-sharp-2.0/gdk-sharp.dll
...
或更好:
gmcs hello.cs -r:"C:\Program Files (x86)\Mono-2.10.8\lib\mono\..." -r:"..."
(即完整路径)
如果您正在使用NAnt,请尝试删除<pkg-references/>
并添加:
<include name="C:\Program Files\Mono\lib\mono\gtk-sharp-2.0\gtk-sharp.dll" />
<include name="C:\Program Files\Mono\lib\mono\gtk-sharp-2.0\gdk-sharp.dll" />
...
<{1>}下的。
请原谅我使用不一致和不完整的路径名;这个答案是一个指南,而不是复制粘贴解决方案。