0

我們有一個Visual Studio擴展,我們在一個私人畫廊中託管。安裝了初始版本後,如果返回到擴展和更新頁面,可以看到它列在已安裝的擴展列表中。突出顯示[禁用]和[卸載]鏈接,在右側窗格中,可以看到正確的「創建者」,「安裝日期」,「版本」和「自動更新此擴展程序」。更新私人畫廊Visual Studio擴展

當我們準備的更新,我們做如下的釋放過程:

  1. 在AssemblyInfo.cs中,我們更新了「的AssemblyVersion」和「的AssemblyFileVersion」到下一個版本,例如「1.12.1.0」
  2. 在source.extension.vsixmanifest中,我們將'Version'更新爲下一個版本(我們使用相同的值,即「1.12.1.0」)
  3. 然後我們簽署VSIX包
  4. 然後,我們把VSIX文件放在我們的私人畫廊
  5. 然後我們更新atom.xml文件 - 稍後會有更多。 atom.xml文件恰好存在於我們的VSIX所在的文件夾中,因爲我們只有有限的這些擴展。

但是,擴展不會在您啓動Visual Studio時自動更新,也不會在您訪問「擴展和更新」時顯示爲更新。因此必須通知用戶新版本,然後手動卸載現有版本,然後安裝更新。

好的,我敢肯定,VSIX文件本身沒有任何不良之處;我懷疑atom.xml可能有問題。關於如何創作atom.xml文件有幾篇文章,但這些文章之間有點不一致,例如, MSDN, justinmchase, Kornfeld Eliyahu Peter,stackoverflow

好的。這裏是我的atom.xml(稍作編輯)

<?xml version="1.0" encoding="utf-8"?> 
<feed xmlns="http://www.w3.org/2005/Atom"> 
    <title type="text">Our Extension Gallery</title> 
    <id>uuid:b62cf56a-8a60-4eb6-b217-5e2972e01b39;id=1</id> 
    <updated>2017-02-28T11:57:22Z</updated> 
    <entry> 
    <id>MyAssemblyName.Microsoft.0681eb6c-4275-4d64-9333-dfdabe14f286</id> 
    <title type="text">Description One</title> 
    <summary type="text">Description Two</summary> 
    <published>2017-01-31T11:57:22Z</published> 
    <updated>2017-02-28T11:57:22Z</updated> 
    <author> 
     <name>Me!</name> 
    </author> 
    <content type="octet/stream" src="http://server/VisualStudioGallery/MyAssemblyName.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>0681eb6c-4275-4d64-9333-dfdabe14f286</Id> 
     <Version>1.12.1.0</Version> 
    </Vsix> 
    </entry> 
</feed> 

那麼我們在atom.xml中更新了什麼?

  • 飼料/更新
  • 進/入/更新
  • 進/入/ VSIX /版本

日期的格式

  • 在一些例子中我've seen'2011-04-14T14:24:22-07:00',而在 其他人我看過'2012-11 -06T22:19:45Z」。有關係嗎?

  • 爲了防萬一UTC,服務器和客戶端時間之間出現混淆,我嘗試使用「時間」部分作爲'T00:00:01Z'。沒有成功。

'進/入/ ID' VS '進/入/ VSIX /編號'

  • 有我得到了正確的外殼爲這些XML元素?我發現要下載我需要'MyAssemblyName.Microsoft.0681eb6c-4275-4d64-9333-dfdabe14f286',但對於feed/entry/Vsix/Id,它是隻是'0681eb6c-4275-4d64-9333-dfdabe14f286'。

我覺得我已經對XML的各個部分進行了修飾,但無濟於事。我敢肯定這很簡單......但是那是什麼讓我無法迴避。

由於

格里夫

回答

1
  1. 對於 '進料/進入/ ID',這是條目的唯一ID。它必須與VSIX包的id完全相同!

  2. 對於feed/entry/Vsix/Id,這是VSIX包的id。

請將它們修改爲與您的vsix軟件包的產品ID相同。

enter image description here

+0

嗨科爾 - 是的,這確實匹配。 – DrGriff

+0

我的AssemblyVersion(和AssemblyVersion)是「1.12.1.0」。這個版本是否也應該放入Manifest版本?如果不是,清單版本(「n.n」或「n.n.n.n」)的格式是什麼?如果這些不同,那麼在atom.xml中應該使用哪個版本? – DrGriff

+0

根據您的xml文件,'feed/entry/id'和'feed/entry/Vsix/Id'的值是不同的。 –

0

感謝科爾武的有益的意見,我終於得到了這個工作。

需要匹配的兩個ID才能使更新正常工作。

所以,我只想澄清我有以下幾點:

的AssemblyInfo.cs

[assembly: AssemblyVersion("1.15.0.0")] 
[assembly: AssemblyFileVersion("1.15.0.0")] 

source.extension.manifest

ProductID: MyApplication.Microsoft.0681eb6c-4275-4d64-9333-dfdabe14f286 
Version: 1.15 

使用atom.xml

<?xml version="1.0" encoding="utf-8"?> 
<feed xmlns="http://www.w3.org/2005/Atom"> 
    <title type="text">Our Extension Gallery</title> 
    <id>uuid:b62cf56a-8a60-4eb6-b217-5e2972e01b39;id=1</id> 
    <updated>2017-02-28T00:00:01Z</updated> 
    <entry> 
    <id>MyApplication.Microsoft.0681eb6c-4275-4d64-9333-dfdabe14f286</id> 
    <title type="text">Description 1</title> 
    <summary type="text">Description 2</summary> 
    <published>2017-01-31T00:00:01Z</published> 
    <updated>2017-03-01T00:00:01Z</updated> 
    <author> 
     <name>Me</name> 
    </author> 
    <content type="octet/stream" src="http://server/VisualStudioGallery/application.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>MyApplication.Microsoft.0681eb6c-4275-4d64-9333-dfdabe14f286</Id> 
     <Version>1.15</Version> 
    </Vsix> 
    </entry> 
</feed> 
  • 進料/進入/ ID =進料/進入/ VSIX /編號= source.extension.manifest.ProductID
  • 進料/進入/ VSIX /版本= source.extension.manifest.Version