mono mcs' Winforms Hello World'给出编译错误CS006:元数据文件' cscompmgd.dll'无法找到

时间:2014-10-09 10:29:33

标签: c# .net linux mono raspberry-pi

我是linux和mono的新手。我使用

将mono安装到新的Raspberry Pi机器上
sudo apt-get install mono-complete.  

我也使用apt-get进行了更新和升级。

然后我在单项目网站的Mono Basics页面中关注了helloWorld示例: http://www.mono-project.com/docs/getting-started/mono-basics/

我设法建立并运行了第一个控制台Hello World'示例使用以下内容:

mcs hello.cs
mono hello.exe

然而,当我尝试下一个示例' Winforms Hello World'时,我遇到了以下错误:'mcs hello.cs -pkg:dotnet':

error CS0006: Metadata file 'cscompmgd.dll' could not be found

但是,如果我使用gmcs而不是mcs,它会起作用。

我在这里和那里用Google搜索但没有运气。

我可以找到此文件的链接' cscompmgd.dll' in' /usr/lib/mono/2.0'我的Raspberry Pi中的目录。

已安装的单声道版本为3.2.8(使用' mono --version'返回)。

有谁知道为什么它适用于gmcs但它不能与mcs一起使用?

谢谢。

2 个答案:

答案 0 :(得分:21)

通过添加-lib:选项解决此问题:

mcs helloWinforms.cs -pkg:dotnet -lib:/usr/lib/mono/2.0

答案 1 :(得分:1)

添加

的解决方案
-lib:/usr/lib/mono/2.0
在我的情况下,

不是最好的(它破坏了对某些4.0元素的依赖,特别是' System.Threading')。

很脏,但有效

另一个非常脏的解决方案是复制

/usr/lib/mono/2.0/cscompmgd.dll

到您的项目文件夹(或Makefile所在的位置)并添加

-r:cscompmgd.dll

编译时(或在' -r')指定的其他包含库的列表之后添加文件名。 可能有一种方法可以在不复制文件的情况下完成,但这超出了我的能力范围。

所以你最终得到:

mcs helloWinforms.cs -pkg:dotnet -r:cscompmgd.dll