2017-08-23 3 views
0

J'ai une extension plus ancienne que j'aimerais utiliser dans VS 2017. Pour pouvoir le faire, je comprends que je devrai utiliser le nouveau VSIX Manifest v3. L'extension fonctionne correctement dans la mise à jour 3 de 2015. Pour la mettre à jour, j'ai effectué les opérations suivantes:La mise à jour de VS Extension de 2015 à 2017 (VSIX v3) rend le package invalide

  1. Ouvrez la source d'extension dans VS2017. Je suis invité à faire une mise à niveau unique, qui est complété avec succès
  2. Utilisez NuGet pour mettre à jour le Microsot VSSDK buildtools de 14.x à 15.x
  3. Ajoutez le bloc Condition préalable au fichier source.extension.vsixmanifest contenant Microsoft.VisualStudio.Component.CoreEditor
  4. Mise à jour de la cible d'installation pour soutenir également le nouveau studio visuel comme si

    <InstallationTarget Version="[15.0,16.0)" Id="Microsoft.VisualStudio.Enterprise" />

Builds avec succès, mais une fois que j'ouvre le fichier VSIX dans mon dossier de débogage, obtenir un message me disant

The file is not a valid VSIX package

Si j'ouvre le fichier avec WinRAR je peux voir que les deux fichiers obligatoires catalog.json et manifest.json n'est pas là-dedans qu'ils sont censés dans le nouveau format v3.

Que manque-t-il ici?

Répondre

1

Il est avéré que était mon problème, que dans le fichier vbproj (ou csproj pour la plupart des autres) il y avait une importation en haut comme ceci:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="..\..\packages\Microsoft.VSSDK.BuildTools.15.1.192\build\Microsoft.VSSDK.BuildTools.props" Condition="Exists('..\..\packages\Microsoft.VSSDK.BuildTools.15.1.192\build\Microsoft.VSSDK.BuildTools.props')" /> 
    <Import Project="..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.props" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.props')" /> 
    .... 

comme vous pouvez le voir ce fichier de projet a pour les importations à la fois la nouvelle version et l'ancien des buildtools. Je ne sais pas pourquoi cela se produit, comme tout ce que j'ai fait était de mettre à jour le VSSDK BuildTools via NuGet. J'ai également essayé de désinstaller complètement les BuildTools en cochant Force uninstall mais il semble être resté à travers tout ce que j'ai essayé.

Donc, si vous rencontrez des problèmes similaires, regardez votre vbproj/fichier csproj si elle a l'importation pour les anciennes versions des Microsoft.VSSDK.BuildTools

+0

J'ai le même problème en migrant un projet VSIX vers 2017 avec exactement le même résultat. Malheureusement, la solution ci-dessus ne s'applique pas à mon projet. Pouvez-vous s'il vous plaît aider avec plus de suggestions. Vous pouvez trouver mon projet sur https://github.com/vmelamed/vm/tree/master/Aspects/Visix/AddRelatedClasses. Merci d'avance! – Valo

+0

Un problème que je vois est que le manifeste.json et catalog.json ne sont pas créés ... – Valo

0

Vous devez également mettre à niveau le package buildtools, l'erreur que vous obtenez indique que cela ne se produit pas: https://docs.microsoft.com/en-us/visualstudio/extensibility/how-to-migrate-extensibility-projects-to-visual-studio-2017

+0

Si vous voulez dire les Microsoft.VSSDK.BuildTools alors cela est déjà mis à jour à version 15.1.192. Vous avez oublié la partie BuildTools dans la question d'origine. Va éditer ceci. –

+0

Peut-être que VsixType? https://github.com/ErikEJ/SqlCeToolbox/blob/master/src/GUI/SqlCe35Toolbox/VSToolbox.csproj#L18 – ErikEJ

+0

J'ai essayé d'ajouter cela au fichier de projet. Pas de chance. –