Обновите атом частной галереи, чтобы VS показывал, что доступно обновление расширения

Я использую частную галерею Visual Studio для публикации внутреннего VSIX в моей компании. Мой VSIX отображается в разделе «Онлайн» раздела «Расширения и обновления» в Visual Studio 2012, и я могу установить его оттуда: VSIX доступен для установки из Интернета

Однако после его установки я не могу понять, как обновить свое расширение таким образом, чтобы оно отображалось в разделе «Обновления» того же диалогового окна, а также не могу понять, как заставить Visual Studio уведомить меня об этом. доступно обновление. VSIX не отображается на панели обновлений, даже если это более новая версия, чем установлена

Я пробовал различные комбинации следующего:

  1. Увеличение номера версии в самом VSIX и в atom.xml
  2. Изменение тега updated внутри тега entry на текущую дату и время
  3. Изменение тега updated внутри тега feed на текущую дату и время
  4. Изменение тега published внутри тега entry на текущую дату и время

Я ожидал, что комбинации 1, 2 и 3 должно быть достаточно, чтобы показать, что есть обновление, но безрезультатно. Это руководство, кажется, подтверждает мое ожидание:

  • Опубликовано — дата/время добавления расширения.
  • Обновлено — дата/время последнего обновления расширения.

Я также пробовал все 4 одновременно, также безрезультатно.

Я обслуживаю галерею из экземпляра Apache и подтвердил, что он устанавливает правильный заголовок Last-Modified для atom.xml .

Есть ли какой-то интервал, с которым Visual Studio проверяет наличие обновлений? Разве открытие раздела «Обновления» в «Расширениях и обновлениях» не заставляет Visual Studio проверять?

Вот содержимое моего atom.xml:

<?xml version="1.0" encoding="utf-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Visual Studio Extension Gallery</title>
  <id>uuid:CDC295B0-7885-4B59-9BDF-F059A9F4B338;id=1</id>
  <updated>2013-12-11T19:00:00Z</updated>
  <entry>
    <id>MyVSIX..b242c6de-d0a6-4ba1-9672-b866e36607d3</id>
    <title type="text">MyVSIX</title>
    <summary type="text">MyVSIX is a nifty extension that does things.</summary>
    <published>2013-12-11T19:00:00Z</published>
    <updated>2013-12-11T19:00:00Z</updated>
    <author>
      <name>daxelrod</name>
    </author>
    <content type="application/octet-stream" src="vsix/MyVSIX.vsix" />
    <Vsix
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://schemas.microsoft.com/developer/vsx-syndication-schema/2010"
    >
      <Id>MyVSIX..b242c6de-d0a6-4ba1-9672-b866e36607d3</Id>
      <Version>0.5</Version>
      <References />
      <Rating xsi:nil="true" />
      <RatingCount xsi:nil="true" />
      <DownloadCount xsi:nil="true" />
    </Vsix>
  </entry>
</feed>

Я также должен отметить, что мое расширение не подписано строгим именем, поскольку оно использует неподписанную стороннюю сборку. Это имеет значение?


person daxelrod    schedule 11.12.2013    source источник


Ответы (3)


У меня была такая же проблема, и я провел глубокое расследование. В моем случае было странно, что мое расширение всегда отображалось как «Загрузить» в частной галерее, а не как «Установлено» (зеленый крючок). Итак, я предположил, что отсутствует ссылка между элементом галереи и установленным элементом.

Ответ прост и раздражает:

Идентификатор должен быть "THE ID". Таким образом, идентификатор продукта (в конфигурации VSIX) — это ссылка, которая должна быть в файле Atom.

В твоем случае:

<Vsix>
    <Id>b242c6de-d0a6-4ba1-9672-b866e36607d3</Id>
</Vsix>

Как видите: без вашего "MyVSIX..". После этого он распознает ваше расширение и, если оно установлено, также скроет кнопку «Загрузить» в галерее.

Для обновления:

Достаточно увеличить ‹ версию > содержание.

Для цикла обновления (мой опыт):

  • Он проверяет при запуске Visual Studio (один раз в день, если опция включена)
  • Он проверяет каждый раз, когда вы открываете «Расширения и обновления». Поэтому повторного открытия после сохранения XML должно быть достаточно.

EDIT: (спасибо за голосование)

Вот картинки для лучшего понимания (сделаны в VS2013, но почти такие же для VS2012)

Идентификатор в файле VSIX. ИД продукта VSIX

Как это должно выглядеть в файле Atom-Feedfile.

<Vsix>
    <Id>d4d50729-a612-4260-9b2e-3a61ad5e2207</Id>
</Vsix>   

Как это должно выглядеть, если вы правильно связали галерею и файл VSIX. Ссылка на галерею

person Adrian von Allmen    schedule 17.12.2013
comment
Большое спасибо, это сработало! Просто для ясности: мы говорим об элементе <Id> внутри элемента <Vsix>. - person daxelrod; 18.12.2013
comment
Спасибо за ваш отзыв. Я добавил тег VSIX в примеры, чтобы уточнить местоположение. - person Adrian von Allmen; 19.12.2013
comment
Отлично, спасибо! Все еще задаюсь вопросом, почему, черт возьми, Microsoft поместила имя расширения + .. перед идентификатором в своем руководстве для частные галереи - person mYnDstrEAm; 19.02.2015

Мы попытались использовать atom.xml в частной галерее для автоматического обновления. Это вообще не работало, даже после удаления имени из идентификатора в теге VSIX. Мы используем пакет, разработанный для VS 2015.

Затем, присмотревшись внимательнее, мы поняли, что идентификатор класса пакета, который также присутствует в файле vsct, отличается от идентификатора, определенного в файле манифеста: source.extension.vsixmanifest. В то время как первый представляет собой чистый GUID, второй представляет собой объединение имени, производителя и другого GUID. Что-то вроде: MyVSIX.MyCompany.GUID (в форме ххххххх-хххх...)

Когда мы использовали второй, все работало отлично. Нам даже удалось обновить ранее установленные пакеты, дважды щелкнув файл vsix.

Я хочу поблагодарить вас, так как эта статья была очень хорошим началом для решения нашей проблемы.

Всего наилучшего, Дэн Василеску

person Dan Vasilescu    schedule 12.08.2016

похоже, что VS проверяет наличие обновлений только один раз в день, но мне не удалось заставить его обнаружить обновленное расширение в галерее Atom.

person jmoffatt    schedule 11.12.2013
comment
К сожалению, даже по прошествии нескольких дней до сих пор нет указаний на обновления. - person daxelrod; 14.12.2013