System.Action<>使用Mono时多次定义

时间:2012-08-16 14:02:11

标签: c# mono action monodevelop

我一直致力于Visual Studio 2010中的winforms C#项目,并且刚刚开始使用Mono 2.10.8进行编译。将项目导入Monodevelop 3.0.3.5非常有用,只要使用.NET运行时,它就可以毫无困难地编译和运行。

但是,当我尝试使用Mono运行时编译它时,除了(两个)对System.Action和System.Func的引用外,所有内容都编译 - 我得到错误CS0433多次定义它。我引用了System.dll,System.Drawing.dll和System.Windows.Forms.dll,我正在使用Mono库的4.0版本。我收集我在System.core中的声明与其他地方之间发生冲突。还有其他人有这个问题吗?我的整个项目编译完全与众不同!

解决

看起来我做的事情相当愚蠢(虽然我会责怪Monodevelop UI!)并且这引起了冲突。这些项目仍然设置为针对.NET framework 4客户端配置文件。我没有意识到你可以改变它们,因为在解决方案的选项上没有选择这样做,但每个项目上都有 。我花了很多时间通过包含的库,并认为v4.0 mscorlib.dll和v2.0 System.core.dll之间存在冲突。当我用v4替换v2.0 mscorelib.dll时,它编译得很好。

然后我发现只需将目标更改为Mono / .NET 4即可解决问题。哦,好吧......

1 个答案:

答案 0 :(得分:0)

首先确保您已清除bin / obj文件夹。

你用什么来编译mono(xbuild,monodevelop或makefile?)?

您使用哪种编译器dmcs?

这些引用(Func<>和Action<>)是mscorlib的一部分。在链接时添加Mscorlib。

你是在一个独立的环境(vurtual机器)还是单声道和.NET在同一台PC上?