更新私有图库原子,以便VS显示扩展更新可用

dax*_*rod 16 visual-studio vsix visual-studio-extensions visual-studio-2012 atom-feed

我正在使用Visual Studio Private Gallery向我的公司发布内部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实例服务于库,我已经确认它正在为atom.xml设置正确的Last-Modified标头.

是否有一些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>
Run Code Online (Sandbox Code Playgroud)

我还应该注意,我的扩展名不是强名称签名,因为它使用了未签名的第三方程序集.这有什么区别吗?

Adr*_*men 17

我有同样的问题,并进行了一些深入调查.在我的情况下,奇怪的是,我的扩展程序在私人图库中始终显示为"下载",而不是"已安装"(绿色挂钩).所以我猜测Gallery项和已安装的Item之间缺少一个Link

答案就像烦人一样简单:

ID必须是"身份证".因此,产品ID(在VSIX配置中)是必须在Atom-File中的引用.

在你的情况下:

<Vsix>
    <Id>b242c6de-d0a6-4ba1-9672-b866e36607d3</Id>
</Vsix>
Run Code Online (Sandbox Code Playgroud)

如你所见:没有你的"MyVSIX ......".之后,它将识别您的扩展,如果安装,还会隐藏图库中的"下载"按钮

更新:

如果你增加<Version>内容就足够了.

对于更新周期(我的经验):

  • 它检查Visual Studio的启动(每天一次,如果启用了选项)
  • 每次打开"扩展和更新"时它都会检查.因此,在保存XML之后重新打开就足够了.

编辑:( 感谢Upvote)

这里的图片是为了更好地理解(在VS2013中制作,但VS2012几乎相同)

VSIX文件中的ID. VSIX产品ID

它应该在Atom-Feedfile中的样子.

<Vsix>
    <Id>d4d50729-a612-4260-9b2e-3a61ad5e2207</Id>
</Vsix>   
Run Code Online (Sandbox Code Playgroud)

如果您在Gallery和VSIX File之间正确链接,应该如何看待. 图库链接