错误CS0029:无法将类型`Cairo.Context'隐式转换为`Cairo.Context' - 单声道版本冲突

时间:2013-04-05 14:35:07

标签: c# mono cairo

显然,我有Mono.Cairo的冲突版本。我可以看到在/usr/lib/mono/gac/Mono.Cairo中有两个文件夹,一个用于2.0版,另一个用于4.0版。从我在谷歌搜索结果中看到的,这引起了冲突。造成问题的代码行是using (Cairo.Context ctx = Gdk.CairoHelper.Create (area.GdkWindow))

显然,这个问题已被回答here,但我不知道他们在说什么。所以我把它告诉你:有没有办法让dmcs使用非冲突的Cairo.Context?

我正在使用Ubuntu 12.04和xmonad,最新版本来自apt-get的mono-complete软件包。

编译write写:dmcs -pkg:gtk-sharp -pkg:mono-cairo Teikniforrit.cs,Teikniforrit.cs是一个简单的绘画工具。 mcs和gmcs从来没有为我工作过。我在Windows 7上设置单声道以查看它是如何工作的,它可以正常使用gmcs,但不能用于mcs或dmcs。

3 个答案:

答案 0 :(得分:1)

很可能你被我刚才看到的同一个bug所击中,包含Mono提供的一个有缺陷的PC文件。我在this commit修复了问题,你可以尝试升级你的Mono吗?

答案 1 :(得分:0)

您需要使用与Cairo.Context相同的“版本”才能使用它。

你可以在这种情况下看到像这样的Cairo.Context

  1. 你与Cairo.Context
  2. 在2.0
  3. 你在4.0中使用Cairo.Context
  4. Cairo.Context 2.0与Cairo.Context 4.0
  5. 进行比较
  6. 这不一样,因为2.0!= 4.0
  7. 这是说明您的代码无效的原因的更好方法。

    您的帖子中引用的解决方案解释了这一点并指定了如何修复要使用的版本,以便在所有情况下都能获得良好版本并避免出现问题。

答案 2 :(得分:0)

正如knocte所说,这种情况完全对应于单声道中固定的错误。

我遇到了同样的问题,并安装了较新版本的单声道固定版本。由于它尚未集成到最新的ubuntu(13.04),我发现此链接非常有用:http://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/

这使您可以安装较新的单声道,而无需手动编译它。