我正在使用Visual Studio Private Gallery向我的公司发布内部VSIX。我的VSIX出现在Visual Studio 2012中“扩展和更新”的“在线”部分,我可以从那里安装它:
但是,一旦安装完毕,我无法弄清楚如何更新我的扩展程序,使其显示在同一对话框的“更新”部分中,也无法弄清楚如何制作Visual Studio通知我有可用的更新。
我尝试了以下各种组合:
updated
标记内的entry
标记更改为当前日期和时间updated
标记内的feed
标记更改为当前日期和时间published
标记内的entry
标记更改为当前日期和时间我的期望是1,2和3的组合应足以表明有更新,但无济于事。 This guide似乎证实了我的期望:
- 已发布 - 添加扩展程序的日期/时间。
- 已更新 - 上次更新扩展程序的日期/时间。
我也同时尝试了所有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>
我还应该注意,我的扩展名不是强名称签名,因为它使用了未签名的第三方程序集。这有什么不同吗?
答案 0 :(得分:17)
我有同样的问题并做了一些深入的调查。在我的情况下,奇怪的是,我的扩展程序在私人图库中始终显示为“下载”,而不是“已安装”(绿色挂钩)。所以我猜测Gallery项和已安装的Item之间缺少一个链接
答案就像烦人一样简单:
ID必须是“THE ID”。 因此,产品ID(在VSIX配置中)是必须在Atom-File中的引用。
在你的情况下:
<Vsix>
<Id>b242c6de-d0a6-4ba1-9672-b866e36607d3</Id>
</Vsix>
如你所见:没有你的“MyVSIX ......”。 之后它将识别你的扩展,如果安装也隐藏了Gallery中的“下载”按钮
更新:
如果你增加&lt;版本&gt; 内容。
更新周期(我的经验):
编辑: (感谢Upvote)
这里的图片是为了更好地理解(在VS2013中制作,但在VS2012中几乎相同)
VSIX文件中的ID。
它在Atom-Feedfile中应该是什么样子。
<Vsix>
<Id>d4d50729-a612-4260-9b2e-3a61ad5e2207</Id>
</Vsix>
如果您在Gallery和VSIX File之间正确链接,它应该如何显示。
答案 1 :(得分:3)
我们尝试在私有图库中使用atom.xml进行自动更新。即使从VSIX标记中的ID中删除名称,它也根本不起作用。我们正在使用为VS 2015开发的软件包。
然后,仔细观察,我们意识到vsct文件中也存在的包类的ID与清单文件中定义的ID不同:source.extension.vsixmanifest。虽然第一个是纯GUID,但第二个是名称,生产者和另一个GUID的串联。 就像是: MyVSIX.MyCompany.GUID(以xxxxxxxx-xxxx的形式......)
当我们使用第二个时,一切都很完美。我们甚至设法通过双击vsix文件来更新以前安装的软件包。
我要感谢你,因为这篇文章是解决我们问题的一个很好的开始。
一切顺利, 丹·瓦西里斯库
答案 2 :(得分:1)
看起来VS每天只会检查一次更新,但我无法让它在Atom图库中检测到更新的扩展名。