Monodevelop警告“无法生成类型为小部件的代码:xxxx”

时间:2010-08-19 00:15:32

标签: c# mono monodevelop

大约2年前,我在一个C#项目上工作,使用MonoDevelop V1和更高版本的V2(beta版本,源代码编译,这是一个使命)。该项目已经死亡。现在我恢复了生命,但我已经将我的开发平台改为Debian(测试,即挤压),它具有MonoDevelop V2.2。

我对V2.2的功能大多非常满意,但我有一个讨厌的小问题。所有代码编译都正常,但在编译运行结束时,我留下了许多警告,如主题行中所示。显然,一旦我尝试运行应用程序,当我打开使用这些小部件的任何内容时,我会在左,右和中间获得异常。

有趣的是,包含小部件的库编译得很好。但不知何故,这些小部件(它们不是全部,只有一两个)不会暴露在界面上,然后使用它们的后续对话框或窗口会抛出上述警告。

有人有这个问题吗?我用谷歌搜索了这一切,所有出现的是迈克尔哈钦森双手在空中说“抱歉,在这里不能帮助”。我真的需要修复此问题,否则我将不得不从头开始重写大量的代码。

2 个答案:

答案 0 :(得分:2)

我建议尝试使用MonoDevelop 2.4,但无论如何这里都有一些提示。

如果你有一个使用在同一个程序集中实现的自定义小部件的程序集,你可能会遇到鸡蛋问题,因为MonoDevelop需要构建的程序集才能找到自定义小部件,但这就是你想要的程序集建立。在收到报告的警告后,再次构建项目可以轻松解决此问题。当心,你必须构建,而不是重建,因为rebuild会删除程序集,你会再次遇到同样的问题。

如果您没有遇到上述问题,或者解决方案不起作用,则问题可能是包含有关导出的窗口小部件的信息的objects.xml文件未正确更新。您将在隐藏的gtk-gui文件夹中找到实现自定义窗口小部件的项目中的文件。打开文件并检查是否在那里声明了所有自定义小部件。如果缺少窗口小部件,请尝试打开窗口小部件的源代码文件并进行少量更改(例如,更改空格),然后再次构建项目。 MonoDevelop应该正确更新文件。

如果您仍遇到问题,请提交bug report

答案 1 :(得分:1)

我想我找到了出路。不确定这是否是“官方”方法,但似乎有效 在这个库中,普通小部件的类定义如下所示:

namespace Amino.Common {

//! A text entry combined with a pop-up date selector, very useful for otherwise busy dialogs
public class DatePicker : Gtk.Bin
{

//! A text entry combined with a pop-up date selector, very useful for otherwise busy dialogs public class DatePicker : Gtk.Bin { 如果我现在在类语句前添加两个额外的声明,如下所示:

namespace Amino.Common {

//! A text entry combined with a pop-up date selector, very useful for otherwise busy dialogs
[System.ComponentModel.Category("Common")]
[System.ComponentModel.ToolboxItem(true)]
public class DatePicker : Gtk.Bin
{
那么

  1. 该小部件包含在objects.xml文件和
  2. 整个解决方案按预期编译(并按预期运行)。
  3. 也许有人可以对此有所了解,我希望能更好地理解这一点。