2011-09-25 29 views
0

我正在使用Ubuntu 11.04,並且正在爲我的C#和其他CLI開發使用MonoDevelop 2.4。我使用這個版本,因爲它是在回購協議中提供的。但是我只是建立了MonoDevelop 2.6,主要是爲了玩弄,看看有什麼新東西,還因爲這是我在Windows上工作時的版本。「最近的解決方案」列表與多個版本的MonoDevelop

到處都是,這兩者在一起玩的很好,但是有一個地方他們分享了一些我不想分享的數據 - 歡迎頁面上的「Recent Projects」列表。最好是,我想只有2.4版本的顯示項目,而2.6版本應該顯示與之相關的項目。但就目前來看,2.4所製作或使用的任何項目都出現在2.6的列表中,反之亦然。

有誰知道如何改變這種情況?我現在還不清楚Ubuntu的方式,但我對MonoDevelop的內部也不熟悉,所以很抱歉,如果這是顯而易見的事情。

回答

0

從昨天開始直通了MonoDevelop 2.6.0.1源代碼之後,我終於找到了必要的代碼更改。我想我會把這個爲了參考起見,以防有人感興趣。

事實證明,MonoDevelop中的「歡迎頁面」由WelcomePage插件代表。反過來,插件的視覺方面由類MonoDevelop.WelcomePage.WelcomePageView表示。在這裏是一個方法GetRecentProjects(),它實際上檢索要顯示的項目列表。

通過這種方法,控制權下降到RecentFileStorage類中的DefaultPath屬性,該屬性給出默認情況下最近存儲項目xml的位置。它定義爲

public static string DefaultPath { 
    get { 
     return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), ".recently-used"); 
    } 
} 

Environment.SpecialFolder.Personal枚舉值代表當前用戶的個人文件夾中;在我的情況下,它是/home/ken請注意,這裏沒有版本信息。這意味着最近的文件列表將始終引用文件/home/ken/.recently-used,而不管您正在運行哪個版本的MonoDevelop。此外,文件的佈局不適用於多個版本,因此唯一的方法是重定向此文件的位置。這很容易完成,通過將上述屬性更改爲像

public static string DefaultPath { 
    get { 
     return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "MonoDevelop2_6", ".recently-used"); 
    } 
} 

之前建設。

我個人認爲,這些事情應該分開,因爲這是一個很容易改變我可能會推動一些版本信息被添加到.recently-used文件的路徑,或以其他方式將其添加到該文件的內容。