"最新解决方案"列出MonoDevelop的多个版本

时间:2011-09-25 19:42:42

标签: ubuntu monodevelop

我正在使用Ubuntu 11.04,我正在使用MonoDevelop 2.4进行C#和其他CLI开发。我正在使用这个版本,因为它是在回购中提供的。但我刚刚构建了MonoDevelop 2.6,主要是为了解决这个问题,看看有什么新内容,以及'因为这是我在Windows上工作时的版本。

到处都是,两人在一起玩得很好,但有一个地方他们分享了一些我宁愿不分享的数据 - 欢迎页面上的“Recent Projects”列表。我希望只有2.4版本的项目使用该版本,而2.6应该显示与之相关的项目。但就目前而言,2.4制作或使用的任何项目都会显示在2.6的列表中,反之亦然。

有谁知道如何改变这个?我不知道我在Ubuntu的方式还不错,而且我也不熟悉MonoDevelop的内部,所以很抱歉,如果这是显而易见的事情。

1 个答案:

答案 0 :(得分:0)

从yestercday开始直接挖掘MonoDevelop 2.6.0.1源代码后,我终于找到了必要的代码更改。我想我会把它作为参考,以防万一有人感兴趣。

事实证明,MonoDevelop中的“欢迎页面”由WelcomePage插件表示。反过来,插件的视觉方面由类MonoDevelop.WelcomePage.WelcomePageView表示。这里有一个方法GetRecentProjects(),它实际上检索要显示的项目列表。

通过此方法,控制向下到DefaultPath类中的RecentFileStorage属性,该属性默认情况下给出了最近项目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文件的路径中,否则它添加到文件的内容中。