visual-studio visual-studio-2012 visual-studio-extensions vsix atom-feed

visual studio - Actualice el átomo de la Galería privada de modo que VS muestre que hay una actualización de extensión disponible



visual-studio visual-studio-2012 (3)

Estoy usando una galería privada de Visual Studio para publicar un VSIX interno en mi empresa. Mi VSIX aparece en la sección "En línea" de "Extensiones y actualizaciones" en Visual Studio 2012 y puedo instalarlo desde allí:

Sin embargo, una vez que está instalado, no puedo averiguar cómo actualizar mi extensión de manera que aparezca en la sección "Actualizaciones" de ese mismo cuadro de diálogo, ni puedo averiguar cómo hacer que Visual Studio me notifique que hay disponible una actualización.

He probado varias combinaciones de las siguientes:

  1. Aumentar el número de versión en el propio VSIX y en el atom.xml
  2. Cambiar la etiqueta updated dentro de la etiqueta de entry a la fecha y hora actuales
  3. Cambiar la etiqueta updated dentro de la etiqueta de feed a la fecha y hora actuales
  4. Cambiar la etiqueta published dentro de la etiqueta de entry a la fecha y hora actuales

Mi expectativa era que una combinación de 1, 2 y 3 debería ser suficiente para mostrar que hay una actualización, pero sin éxito. Esta guía parece confirmar mi expectativa:

  • Publicado: la fecha / hora en que se agregó la extensión.
  • Actualizado: la fecha / hora en que se actualizó por última vez la extensión.

También he intentado los 4 al mismo tiempo, también en vano.

Estoy sirviendo la galería desde una instancia de Apache, y he confirmado que está configurando un encabezado Last-Modified correcto para el atom.xml.

¿Hay algún intervalo en el que Visual Studio comprueba si hay actualizaciones? ¿La apertura de la sección "Actualizaciones" de "Extensiones y actualizaciones" no obliga a Visual Studio a verificar?

Aquí está el contenido de mi 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>

También debo tener en cuenta que mi extensión no está firmada con un nombre seguro, ya que utiliza un ensamblado de un tercero que no está firmado. Eso hace una diferencia?


Intentamos utilizar un atom.xml en una galería privada para una actualización automática. No funcionó en absoluto, incluso después de eliminar el nombre de la ID en la etiqueta VSIX. Estamos utilizando un paquete desarrollado para VS 2015.

Luego, observando más detenidamente, nos dimos cuenta de que el ID de la clase de paquete, que también está presente en el archivo vsct, es diferente del ID definido en el archivo de manifiesto: source.extension.vsixmanifest. Mientras que el primero es un GUID puro, el segundo es una concatenación del nombre, el productor y otro GUID. Algo como: MyVSIX.MyCompany.GUID (en forma de xxxxxxxx-xxxx ...)

Cuando usamos el segundo, todo funcionó perfectamente. Incluso logramos actualizar los paquetes que se instalaron previamente haciendo doble clic en el archivo vsix.

Quiero agradecerles ya que este artículo fue un muy buen comienzo para resolver nuestro problema.

Todo lo mejor, Dan Vasilescu.


Parece que VS solo busca actualizaciones una vez al día, pero no pude detectarlo para detectar una extensión actualizada en una galería Atom.


Tuve el mismo problema e hice una investigación profunda. En mi caso, fue extraño que mi extensión siempre se mostrara como "Descargar" en la Galería privada en lugar de "Instalada" (el Gancho Verde). Así que adiviné que falta un enlace entre el elemento de la Galería y el elemento instalado.

La respuesta es tan simple como molesta:

La ID tiene que ser "LA ID" . Por lo tanto, la identificación del producto (en la configuración de VSIX) es la referencia que debe estar en el archivo Atom.

En tu caso:

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

Como ve: sin su "MyVSIX ..". Después de eso, reconocerá su Extensión y, si está instalado, también ocultará el botón "Descargar" dentro de la Galería.

Para la actualización:

Es suficiente si aumentas el contenido de <Versión> .

Para el Ciclo de Actualización (mi experiencia):

  • Comprueba el inicio de Visual Studio (una vez al día, si está habilitada en opción)
  • Comprueba cada vez que abres las "Extensiones y actualizaciones". Así que volver a abrir después de guardar el XML debería ser suficiente.

EDITAR: (gracias por el Upvote)

Aquí las imágenes para comprender mejor (hechas en VS2013, pero casi iguales para VS2012)

El ID en el archivo VSIX.

Cómo debería ser en el archivo Atom-Feedfile.

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

Cómo debe verse si se vincula correctamente entre la Galería y el Archivo VSIX.