web-dev-qa-db-ja.com

すべてのvsixmanifest:VS 2010、2012、2013

VS2013でVSIXマニフェストデザイナーを使用しています。 Microsoft.VisualStudio.Pro製品識別子と[10.0,13.0)バージョンを追加しましたターゲットをインストールする範囲。その事実にもかかわらず、私はまだVS2010Professionalを利用可能なインストールターゲットとして見ていません。

enter image description here

Source.extension.vsixmanifestファイルの内容を以下に示します。

<?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>

この拡張機能をVS2010、2012、および2013にインストールできるようにするには、何を変更する必要がありますか?

21
jwaliszko

お持ちのバージョン2VSIXマニフェストは、Visual Studio2010と互換性がありません。以降のVisualStudioバージョンはマニフェストのバージョン1を尊重するため、単一のマニフェストで3つのVisualStudioバージョンすべてをサポートするには手動でv1.0に変換します(VS2012 +で編集しないでください。編集しないとv2.0に戻されます)。

このようなもの:

<?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>

すべての製品エディション(SKUと呼ばれる)を指定する必要はありません。Proで十分です。たとえば、Ultimateがインストールされている場合は、代わりに表示されます。

30
Igal Tabachnik

VSIXがVS2012で開発され、VS 2015にインストールされている場合、それはかなりうまく機能しています(Igalに感謝します)。ただし、その逆動作していません(VS 2015で開発され、VS 2012でインストールしようとしていることを意味します)Activitylog .xmlを分析した後、回避策を見つけました

ファイルまたはアセンブリを読み込めませんでした 'Microsoft.VisualStudio.Shell.14.0、Version = 14.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つ。

回避策 VisualStudio.Shell.14.0を削除し、パッケージマネージャーコンソールを使用してVisualStudio.Shell.11.0をインストールします(Install-Package VSSDK.Shell.11)、VS2012にインストールされました。現在は期待どおりに機能しています