我一直在 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 即可解决问题。那好吧...