vsixmanifest для всех: VS 2010, 2012 и 2013
Я использую VSIX Manifest Designer под VS2013. Я добавил идентификатор продукта 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?
2 ответа
У вас есть манифест VSIX версии 2, который не совместим с Visual Studio 2010. В более поздних версиях Visual Studio соблюдается версия 1 манифеста, поэтому для поддержки всех трех версий 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
установлен, он будет отображаться вместо.
Он работает довольно хорошо (большое спасибо Igal), если VSIX разработан в VS 2012 и установлен в VS 2015. Однако обратное не работает (значит, разработано в VS 2015 и попытаться установить в VS 2012) После проанализировал Activitylog .xml, нашел обходной путь
Не удалось загрузить файл или сборку "Microsoft.VisualStudio.Shell.14.0, версия =14.0.0.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a" или одна из ее зависимостей.
Обходной путь Я удалил VisualStudio.Shell.14.0 и установил VisualStudio.Shell.11.0 с помощью консоли диспетчера пакетов (Install-Package VSSDK.Shell.11) и установил в VS 2012. Теперь работает как положено