mono-mcs';Winforms Hello World';给出编译错误CS006:元数据文件';

本文关键字:CS006 错误 文件 编译 元数据 Winforms Hello World mono-mcs | 更新日期: 2023-09-27 18:26:00

我是linux和mono的新手。我使用将mono安装到一台新的树莓派机器上

sudo apt-get install mono-complete.  

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

然后,我在Mono项目网站的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

然而,如果我使用gmc而不是mcs,它是有效的。

我在谷歌上到处搜索,但没有运气。

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

安装的单声道版本为3.2.8(使用"单声道版本"返回)。

有人知道为什么它能用gmc,但不能用mcs吗?

谢谢。

mono-mcs';Winforms Hello World';给出编译错误CS006:元数据文件';

通过添加-lib:选项来解决,如下所示:

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

添加的解决方案

-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