#c# #visual-studio #auto-update #visual-studio-extensions #vspackage
#c# #visual-studio #автоматическое обновление #visual-studio-extensions #vspackage
Вопрос:
Итак, я создал частную галерею расширений в Visual Studio и опубликовал расширение.
Я хотел создать другое расширение, которое автоматически обновляло бы первое, когда доступно обновление. Я нашел образец исходного кода (https://github.com/madskristensen/ExtensionUpdater ) для автоматического поиска и обновления расширений с помощью ExtensionRepositoryService, который предоставляет возможность запрашивать онлайн-репозиторий расширений Visual Studio.
ExtensionRepositoryService поставляется с предопределенными настройками и подключается к галерее Visual Studio, как только она возвращается с помощью пакета.GetService(тип) используется следующим образом:
var repository = (IVsExtensionRepository)GetService(typeof(SVsExtensionRepository));
Запрос к репозиторию позже выполняется с помощью следующего кода:
var entry = _repository.CreateQuery<GalleryEntry>(false, true, "ExtensionManagerUpdate")
.Where(e => e.VsixID == extension.Header.Identifier)
.AsEnumerable()
.FirstOrDefault();
Мой вопрос: возможно ли использовать тот же API для подключения к частной галерее VS и запрашивать предоставленные расширения в галерее?
Комментарии:
1. VS 2015 автоматически обновляет большинство расширений
2. Действительно, вам не нужно заставлять расширения обновлять другие расширения…
3. наши корпоративные разработчики в основном используют vs2010 и 2013, я не могу предположить, что у них самый обновленный VS
Ответ №1:
В итоге я создал класс CustomGallery, который реализует интерфейс IVsExtensionRepository
Класс имеет один конструктор, который получает путь к файлу XML и анализирует XML для чтения файла atom частной галереи. Я использовал Lync для простого запроса объекта CustomGallery
Комментарии:
1. Не могли бы вы опубликовать сослаться на вашу реализацию IVsExtensionRepository, поскольку я пытался выполнить поиск по всему Интернету, чтобы найти какую-либо реализацию для этого интерфейса, но никак… Мне пришлось имитировать основные функции галереи расширений для создания частной галереи расширений… Спасибо.