我下载了Mono并安装在Win 7 64bit上
我去了这个网站按照说明http://www.mono-project.com/Mono_Basics
我打开单声道命令提示符并编译并运行控制台hello world
然后我试着编译窗口hello世界的例子
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
我该如何解决?
这是类似的问题在这里不能编译hello.cs为GTK#使用单声道命令提示符 ,这是没有回答。
这些都是指出问题根源的有益答案。 但是,最简单的解决方案是将Mono安装到名称中没有空格的文件夹中。 安装时,只需选择“C:\ SDK \ Mono”。 问题解决了,没有必要的时髦的解决方法。
解决方法我已经发现,在安装了Mono的Windows 7中,“Program Files”的子目录是在C:的根目录下创建一个文件夹来保存目录链接(例如,称为MonoLinks .. NB no space在名称中),然后从命令提示符进入此目录并创建一个目录连接,给它一个不包含空格的名称。
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属性文本末尾的路径)。
-pkg
似乎在Windows上有缺陷。 在干净的命令提示符下,如果将Program Files\Mono\bin
放在PATH上,则gmcs
将会扼杀语法,并将提供有关Files\Mono\...
的错误,指示与路径名中的空格有关的错误。 如果您将PROGRA~1\MONO\bin
放在您的PATH中,或使用单声道命令提示符,它会窒息并提供有关PROGRA\~1/MONO/...
的错误,指示与波形(等)有关的错误和转义他们。
请注意,虽然我已经给出了32位示例,但没有理由不适用于64位版本, PROGRA~2
和Program Files (x86)
。
我找到的解决方法是使用完整路径,根据信息pkg-config返回给个人-r[eference]
参数给gmcs。 尝试:
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" /> ...
在<references/>
。
请原谅我使用不一致和不完整的路径名称; 这个答案是为了指导,而不是复制粘贴解决方案。