2010-08-19 16 views
0

大約2年前,我在Fedora下使用MonoDevelop V1和更高版本的V2(beta版本,從源代碼編譯,完成一項任務)開發C#項目。該項目死了。現在我正在將它變成現實,但是我已經將我的開發平臺更改爲具有MonoDevelop V2.2的Debian(測試,即擠壓)。Monodevelop警告「無法生成類型爲:xxxx的小部件的代碼」

我對V2.2的功能大多非常滿意,但我有一個討厭的小問題。所有的代碼都能編譯好,但在編譯運行結束時,我留下了許多警告,如主題行。顯然,只要我嘗試運行應用程序,當我打開使用這些小部件的任何東西時,我就會遇到例外,左側和右側。

有趣的是,包含小部件的庫編譯得很好。但不知何故,這些小部件(並非全部,只有一兩個)不會暴露在界面上,隨後使用它們的對話框或窗口會引發上述警告。

有沒有人有這個問題?我用google搜索了這一切,所有出現的是邁克爾哈欽森向空中舉手,並說:「對不起,在這裏無法幫助」。我真的需要解決這個問題,否則我將不得不重新編寫大量的代碼。

回答

2

我會建議嘗試MonoDevelop 2.4,但無論如何這裏有一些提示。

如果您有一個使用在同一個程序集中實現的自定義小部件的程序集,您可能會遇到雞蛋問題,因爲MonoDevelop需要構建的程序集才能找到自定義小部件,但這是您正在嘗試的程序集建立。在收到您報告的警告後,再次構建項目可輕鬆解決此問題。要小心,你必須建立,而不是重建,因爲重建會刪除程序集,你會再次遇到同樣的問題。

如果您沒有上述問題,或者解決方案無法正常工作,則問題可能是包含關於導出窗口小部件的信息的objects.xml文件未正確更新。您將在隱藏的gtk-gui文件夾中找到實現定製小部件的項目中的文件。打開文件並檢查是否在那裏聲明瞭所有定製小部件。如果小部件丟失,請嘗試打開小部件的源代碼文件並做一些小改動(例如更改空白),然後重新構建項目。 MonoDevelop應該正確更新文件。

如果仍有問題,請提交bug report

+0

感謝您的指點。這些小部件不在同一個項目中使用(我很久以前就已經學過這門課)。我將檢查XML文件。試圖手動更新這個文件會有什麼意義嗎? – wolfgangsz 2010-08-19 16:24:43

+0

雖然MonoDevelop可能會覆蓋它,但您可以嘗試手動更新。 – 2010-08-19 16:56:41

+0

嗯,該文件完全關閉,即其內容根本不描述應該從庫中導出的小部件。我刪除了文件(帶備份),而MonoDevelop不會重建它。 – wolfgangsz 2010-08-19 21:19:07

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 
{ 

如果我現在增加兩個附加聲明就在類語句的前面,就像這樣: 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. 整個解決方案按預期編譯(並按預期運行)。

也許有人可以對此有所瞭解,我想更好地理解這一點。

相關問題