2014-03-27 16 views
21

Ich benutze VSIX Manifest Designer unter VS2013. Ich habe hinzugefügt Microsoft.VisualStudio.Pro Produktidentifikator und [10.0,13.0] Versionsbereich, um Ziele zu installieren. Trotz dieser Tatsache, sehe ich immer noch nicht meine VS2010 Professional als ein verfügbares Installationsziel:vsixmanifest für alle: VS 2010, 2012 und 2013

enter image description here

Der source.extension.vsixmanifest Dateiinhalt ist unten dargestellt:

<?xml version="1.0" encoding="utf-8"?> 
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011"> 
    <Metadata> 
    <Identity Id="ae98c9e5-8e14-4c92-b45a-c4fd24a49123" Version="1.0" Language="en-US" Publisher="whosoever" /> 
    <DisplayName>MyExtension</DisplayName> 
    <Description xml:space="preserve">whosoever</Description> 
    <MoreInfo>http://www.myextension.com</MoreInfo> 
    <License>LICENSE.txt</License> 
    <Icon>icon.png</Icon> 
    <PreviewImage>screenshot.png</PreviewImage> 
    </Metadata> 
    <Installation InstalledByMsi="false"> 
    <InstallationTarget Version="[10.0,13.0)" Id="Microsoft.VisualStudio.Pro" /> 
    </Installation> 
    <Dependencies> 
    <Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="4.5" /> 
    <Dependency Id="Microsoft.VisualStudio.MPF.11.0" DisplayName="Visual Studio MPF 11.0" d:Source="Installed" Version="11.0" /> 
    </Dependencies> 
    <Assets> 
    <Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" /> 
    </Assets> 
</PackageManifest> 

Was sollte geändert, um die Installation dieser Erweiterung für VS2010, 2012 und 2013 zu ermöglichen?

Antwort

30

Was Sie haben, ist die Version 2 VSIX-Manifest, die nicht mit Visual Studio 2010 kompatibel ist. Später Visual Studio-Versionen respektieren Version 1 des Manifests, so dass Sie alle 3 Visual Studio-Versionen mit einem einzigen Manifest zu unterstützen Ich muss es manuell in v1.0 konvertieren (und sicherstellen, dass es NICHT mit VS2012 + bearbeitet wird, sonst wird es wieder in v2.0 konvertiert).

Etwas wie folgt aus:

<?xml version="1.0" encoding="utf-8"?> 
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010"> 
    <Identifier Id="ae98c9e5-8e14-4c92-b45a-c4fd24a49123"> 
    <Name>MyExtension</Name> 
    <Author>whosoever</Author> 
    <Version>1.0</Version> 
    <Description xml:space="preserve">Your decription.</Description> 
    <Locale>1033</Locale> 
    <SupportedProducts> 
     <VisualStudio Version="10.0"> 
     <Edition>Pro</Edition> 
     </VisualStudio> 
     <VisualStudio Version="11.0"> 
     <Edition>Pro</Edition> 
     </VisualStudio> 
     <VisualStudio Version="12.0"> 
     <Edition>Pro</Edition> 
     </VisualStudio> 
    </SupportedProducts> 
    <SupportedFrameworkRuntimeEdition MinVersion="4.0" /> 
    </Identifier> 
    <Content> 
    <VsPackage>|%CurrentProject%;PkgdefProjectOutputGroup|</VsPackage> 
    <MefComponent>|%CurrentProject%|</MefComponent> 
    </Content> 
</Vsix> 

Sie müssen nicht alle Produktversionen angeben (SKUs genannt), Pro reicht, wenn, sagen wir, Ultimate installiert ist, wird es stattdessen angezeigt.

+0

Wenn Sie eine Version 1 vsixmanifest-Datei in 2012+ öffnen, wird es nur als eine XML-Datei (ohne den Designer) geöffnet. Ich habe noch nie versucht, die Datei zu konvertieren. –

+0

@ 280Z28 Ja, du hast Recht. Ich meinte, es mit dem VSIX Manifest Editor zu öffnen. Es wird das v2-Schema in der Datei anhängen. Die v1 nicht ersetzen, aber auch nicht lesen. –

+2

Diese Antwort rockt einfach! Ich kann nicht glauben, dass sie das Schema so geändert haben, dass die Dinge manuell erledigt werden müssen, solange Sie VS2010 unterstützen müssen (dies ist das Gegenteil von rocks)! –

1

Es funktioniert ziemlich gut (Vielen Dank an Igal), wenn der VSIX in VS 2012 entwickelt und in VS 2015 installiert ist. Allerdings funktioniert das Gegenteil (bedeutet in VS 2015 entwickelt und versuchen, installieren in VS 2012) Nach analysiert Activitylog .xml, fand ich eine Arbeit um

konnte nicht geladen werden Datei oder Assembly ‚Microsoft.VisualStudio.Shell.14.0, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'oder eine seiner Abhängigkeiten.

Abhilfe habe ich VisualStudio.Shell.14.0 entfernen und installieren VisualStudio.Shell.11.0 Package Manager-Konsole (Install-Package VSSDK.Shell.11) und installiert in VS 2012. Jetzt als Arbeits erwartet