2017-10-06 19 views
0

Notre équipe prend en charge les efforts d'automatisation des utilisateurs qui utilisent la dernière version de Specflow, ainsi que ceux qui ne le sont pas. Il existe donc un besoin de rebondir entre le .vsix actuel pour Specflow sur VS2017, ainsi que le .vsix qui attend Specflow 2.1 (en ce moment je suis bloqué car toute régénération de feature.cs échoue avec un 2.2 introuvable). J'ai essayé de tirer de https://github.com/techtalk/SpecFlow.VisualStudio/tree/release/v2017.1, mais je reçois plusieurs références non résolues à Microsoft.VisualStudio. Un moyen de simplement tirer le .vsix qui fonctionne avec SpecFlow 2.1?Télécharger la version précédente de Specflow .vsix

? Edit: Merci Andreas, la réponse rapide est très appréciée. Je vais aller de l'avant et ouvrir un problème sur GitHub si vous le souhaitez, mais je ne voulais pas laisser entendre qu'il y a un problème avec l'extension. C'est peut-être un malentendu de ma part - je pense que l'actuelle extension Specflow VS "attend" SpecFlow 2.2. Comme vous le savez, SpecFlow 2.2 utilise NUnit 3.x, tandis que SpecFlow 2.1 utilise NUnit 2.x, ce qui constitue un changement radical pour les solutions utilisant des fonctions obsolètes de NUnit 2.x. Par conséquent, lorsque je passe d'une branche utilisant SpecFlow 2.2 à une autre branche utilisant 2.1 (même après avoir effacé AppData/Local/Temp), SpecFlowGenerator échoue car il recherche SpecFlow 2.2, ce que nous ne voulons pas. utiliser dans la branche de pré-conversion en raison du problème NUnit. Je souhaiterais ne pas devoir échanger l'extension, tant que je peux continuer à changer de branche entre une qui utilise SpecFlow 2.1 et une qui utilise 2.2. Le app.config pour le projet ne contient une redirection de liaison -

<dependentAssembly> <assemblyIdentity name="TechTalk.SpecFlow" publicKeyToken="0778194805d6db41" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.2.1.0" newVersion="2.1.0.0" /> </dependentAssembly>

La question est de savoir comment utiliser l'extension mise à jour même quand rebondir entre les branches qui utilisent 2.1 et 2.2. Merci encore!

Répondre

0

L'extension Visual Studio prend en charge toutes les versions de SpecFlow de 1.9 à 2.2.

Si vous avez des problèmes, s'il vous plaît ouvrir un problème sur GitHub, afin que nous puissions trouver la raison ensemble.

Mise à jour:
SpecFlow ne fait aucune référence directe à NUnit. Pas avec 2.2 ou rien avant. Il y a un paquet NuFit SpecFlow.NUnit qui a une dépendance de paquet à NUnit, mais ce paquet aide seulement à configurer SpecFlow pour NUnit. Mais vous n'en avez pas besoin, lorsque vous effectuez la configuration manuellement (en configurant le fournisseur de test unitaire sur NUnit dans le fichier app.config). Il se peut que, lorsque vous changez de branche et que vous ne redémarriez pas Visual Studio, nous ayons toujours une référence aux assemblages SpecFlow précédents, ce qui entraîne la création d'un hickup de version.


Divulgation complète: Je suis l'un des mainteneurs de SpecFlow.

+0

Merci Andreas - auriez-vous l'amabilité de lire l'Edit dans la question que je viens d'ajouter? Je n'ai peut-être pas suffisamment expliqué le raisonnement. – CindyLu

+0

J'ai également mis à jour ma réponse. –

0

Au cas où quelqu'un se bat d'autre avec cela, voici la solution qui a fonctionné pour moi avec cette séquence particulière d'événements

1) vous avez une branche qui utilise SpecFlow 2,1

2) mise à niveau vers la dernière VS SpecFlowExtension

3) vous passez à une autre branche qui utilise SpecFlow 2.2 et qui possède la fonction avec succès.cs généré

4), vous obtenez une demande d'un besoin de soutien utilisateur 2.1, passer à cette branche, faire un changement dans un fichier de fonction, et obtenir claqué avec SpecFlow 2.2 non trouvé

5), même après la fermeture toutes les instances de VS, la suppression localappdata/Temp/VisualStudioTestExplorerExtensions, à partir VS et d'ouverture de la solution qui utilise les pilotes SpecFlow 2.1, puis tentez d'enregistrer les résultats encore SpecFlow 2.2 pas trouvé, même avec une redirection de liaison à 2,1

Apparemment, quelque chose est mis en cache sur le disque (redémarrage n'a pas aidé) qui n'est pas immédiatement apparent. La solution consistait à avoir des clones séparés - un pour la branche qui référençait SpecFlow 2.1 et un clone entièrement séparé pour la branche qui faisait référence à SpecFlow 2.2.

Maintenant, je n'ai plus d'erreurs SpecFlow Generator - l'astuce n'est pas d'utiliser des branches séparées, mais des clones séparés.