【发布时间】:2015-11-20 19:28:33
【问题描述】:
我一直在 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 即可解决问题。哦,好吧……
【问题讨论】:
-
你有可能被引用两次吗?如果您有一个指向 Mono 的引用,并且在 Bin 中复制了一个 windows dll,我认为可能会发生这种情况......
-
嗯 - 当我添加对 Mono 的引用时,它会自动在 bin 目录中生成 windows dll 的本地副本。我尝试关闭 make local copy 选项并且它停止这样做 - 但不幸的是同样的多重引用错误。
-
我认为这可能与它有关link - System.Action
在 3.5 system.core.dll 和 4.0 mscorlib.dll 中都定义了
标签: c# mono action monodevelop