Список «Недавних решений» с несколькими версиями MonoDevelop - PullRequest
0 голосов
/ 25 сентября 2011

Я работаю над Ubuntu 11.04 и использую MonoDevelop 2.4 для C # и других разработок CLI.Я использую эту версию, так как она предоставляется в репозиториях.Но я только что построил MonoDevelop 2.6, в основном для того, чтобы поиграться, посмотреть, что нового, а также потому, что это версия, когда я работаю на Windows.они делятся некоторыми данными, которые я бы предпочел не делиться - список «Недавние проекты» на странице приветствия.Желательно, чтобы в версии 2.4 отображались только проекты, используемые с этой версией, а в версии 2.6 - проекты, относящиеся к ней.Но, как сейчас обстоят дела, любой проект, созданный или использованный 2.4, появляется в списке для 2.6 и наоборот.

Кто-нибудь знает, как это изменить?Я пока не очень хорошо разбираюсь в Ubuntu, и я тоже не знаком с внутренностями MonoDevelop, так что извините, если это что-то должно быть очевидным.

1 Ответ

0 голосов
/ 27 сентября 2011

После копания в исходном коде 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 или добавить его к содержимому файла иным способом.

...