1

我一直在 Visual Studio 2010 中处理一个 winforms C# 项目,并且刚刚开始使用 Mono 2.10.8 编译它。将项目导入 Monodevelop 3.0.3.5 效果很好,只要使用 .NET 运行时,它就可以毫无问题地编译和运行。

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

解决了

似乎我在做一些相当愚蠢的事情(尽管我要责怪 Monodevelop UI!),这导致了冲突。这些项目仍然设置为针对 .NET Framework 4 客户端配置文件。我没有意识到您可以更改它们,因为解决方案的选项没有这样做的选项,但是每个单独的项目都有我花了很长时间研究包含的库,发现 v4.0 mscorlib.dll 和 v2.0 System.core.dll 之间存在冲突。当我用 v4 替换 v2.0 mscorelib.dll 时,它编译得很好。

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

4

1 回答 1

0

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

你用什么来编译单声道(xbuild、monodevelop 或 makefile?)?

你使用哪个编译器 dmcs?

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

您是在独立环境(虚拟机)上还是单声道和 .NET 在同一台 PC 上?

于 2012-08-16T15:04:08.857 回答