22

我在 VS2013 下使用 VSIX Manifest Designer。我添加了Microsoft.VisualStudio.Pro产品标识符和[10.0,13.0)版本范围来安装目标。尽管如此,我仍然没有将我的 VS2010 Professional 视为可用的安装目标:

在此处输入图像描述

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?

4

2 回答 2

31

您所拥有的是版本 2 VSIX 清单,它与 Visual Studio 2010 不兼容。后来的 Visual Studio 版本尊重清单的版本 1,因此为了支持具有单个清单的所有 3 个 Visual Studio 版本,您必须手动将其转换为 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已安装,则会显示它。

于 2014-03-27T13:18:31.363 回答
1

如果 VSIX 是在 VS 2012 中开发并在 VS 2015 中安装的,它工作得非常好(非常感谢 Igal)。但是,反向不起作用(意味着在 VS 2015 中开发并尝试在 VS 2012 中安装)之后分析了 Activitylog .xml,我找到了解决方法

无法加载文件或程序集 'Microsoft.VisualStudio.Shell.14.0, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。

解决方法我确实 删除了 VisualStudio.Shell.14.0 并使用包管理器控制台(Install-Package VSSDK.Shell.11)安装 VisualStudio.Shell.11.0,并安装在 VS 2012 中。现在按预期工作

于 2016-06-17T11:26:43.933 回答