J'essaie d'installer la nuget Microsoft.VisualStudio.QualityTools.UnitTestFramework
dans Visual Studio 2015 dans un projet simple et j'ai reçu le message suivant:
Impossible d'installer le package 'Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.0.30319.1'. Vous essayez d'installer ce package dans un projet qui cible '.NETFramework, Version = v4.5.2', mais le package ne contient aucune référence d'assembly ni aucun fichier de contenu compatible avec ce cadre. Pour plus d'informations, contactez l'auteur du package.
Mais, lorsque j'essaie d'installer ce package dans Visual Studio 2013 dans le même projet, cela fonctionne.
Comment puis-je installer ce nuget dans Visual Studio 2015?
Le temps a passé, mais cela m’arrive, et j’ai trouvé que cela n’a rien à voir avec la version du framework. Le texte important du message d'erreur est le suivant: "... mais le package ne contient aucune référence à l'Assemblée ou fichier de contenu ...".
En effet, mon paquet n'a pas de contenu visible pour Nuget: il contient un dossier non conventionnel avec des bibliothèques natives tierces et un fichier Install.ps1 qui ajoute un événement post-construction avec une commande Xcopy.
En guise de redressement facile, il suffit de placer un fichier factice dans le dossier Content du package ou tout autre contenu factice dans lib, un noeud de fichier vide (non essayé), etc.
EDIT 29/5/2017
Je constate que cette réponse est utile aux autres, et c’est pourquoi je vais élaborer un peu plus.
Comme je l'ai dit, le problème est que Nuget ne voit pas de contenu dans le paquet, mais il peut avoir deux causes:
Le paquet n'a vraiment pas de contenu visible car il déplace le contenu avec un script, etc. (comme c'était mon cas), et il est ensuite nécessaire de créer un contenu factice comme solution de contournement.
Il y a une erreur dans la spécification d'un paquet qui doit avoir un contenu (comme ce fut le cas d'Evgeni Nabokov dans les commentaires), et vous devez ensuite corriger la spécification pour mettre les choses en place.
Désolé pour mon mauvais anglais.
Le message d'erreur vous indique qu'il n'y a pas de version de nuget pour votre version de framework.
Dans VS2013, vous créez probablement le projet dans la version 4.5.0 ou 4.0.0 du framework .Net.
Avez-vous essayé de changer la version .Net de votre projet en 4.5.2?
Je rencontrais ce problème lorsque je construisais mes paquets de pépites dans TeamCity, que je les publiais dans un artifactory local et que j'essayais ensuite de les utiliser dans d'autres projets.
Afin d'éviter ce problème - dans TeamCity, BuildSteps ==> NuGet Pack ==> Paramètres du package ==> Fichiers de spécification, vous devez sélectionner le fichier .csproj sur fichier nuspec et cocher l'option "Préférer les fichiers de projet à .nuspec"
Le paquetage qui se construit comme ça va pouvoir être importé et plus aucune plainte de VS.
Cela peut se produire lorsque le standard .NET de la solution et le package NuGet correspondant ne correspondent pas. Voici un tableau de ce lien :
╔════════════════════════════╦═══════════════════════════════════════════════════════════════╗
║ .NET Platform ║ .NET Standard ║
╠════════════════════════════╬═══════╦═══════╦═══════╦═══════╦═══════╦═══════╦═══════╦═══════╣
║ ║ 1.0 ║ 1.1 ║ 1.2 ║ 1.3 ║ 1.4 ║ 1.5 ║ 1.6 ║ 2.0 ║
╠════════════════════════════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣
║ .NET Core ║ → ║ → ║ → ║ → ║ → ║ → ║ 1.0 ║ vNext ║
║ .NET Framework ║ → ║ 4.5 ║ 4.5.1 ║ 4.6 ║ 4.6.1 ║ 4.6.2 ║ vNext ║ 4.6.1 ║
║ Xamarin.iOS ║ → ║ → ║ → ║ → ║ → ║ → ║ → ║ vNext ║
║ Xamarin.Android ║ → ║ → ║ → ║ → ║ → ║ → ║ → ║ vNext ║
║ Universal Windows Platform ║ → ║ → ║ → ║ → ║ 10.0 ║ → ║ → ║ vNext ║
║ Windows ║ → ║ 8.0 ║ 8.1 ║ ║ ║ ║ ║ ║
║ Windows Phone ║ → ║ → ║ 8.1 ║ ║ ║ ║ ║ ║
║ Windows Phone Silverlight ║ 8.0 ║ ║ ║ ║ ║ ║ ║ ║
╚════════════════════════════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╝
Vous devez faire correspondre à la fois la version standard du framework et .NET. Je préfère .NET standard 1.4 et .NET Framework 4.6.1. En créant la norme .NET, Microsoft codifie la nécessité de disposer d’API cohérentes sur toutes les plateformes .NET. Il semble qu'une fois que vous migrez vos solutions vers ce niveau de compatibilité, une "incompatibilité" ou que vous retrouviez la roue après chaque mise à jour sera un souvenir du passé.
J'ai compris cela et cela n'avait aucun sens car je l'utilisais déjà sans problème sur un projet de framework 4.6 et l'erreur m'a dit que cela ne fonctionnerait pas sur le framework 4.6 que je savais être faux.
Finalement, je l'ai résolu en créant un autre projet test, en copiant les fichiers cs, etc. de mon ancien projet test, puis en installant UnitTestFramework via NuGet. Ça fonctionne bien.
Donc, quelque chose arrive que seul Microsoft peut résoudre, je suppose, mais recommencer semble résoudre le problème.
J'ai trouvé que DynamicInterop.0.8.1.nupkg contient le fichier dll dans un dossier 'lib\netstandard1.2'. Je viens de changer le nom du dossier en lib\net40 et le paquet installerait ok (I.m en utilisant VS2013). En outre: le fichier .nupkg est juste un fichier .Zip, donc tout outil Zip vous permet de manipuler le contenu.
Il semble que la création d'un "Projet de test unitaire" au lieu de "Bibliothèque de classes" résout le problème. Je me suis battu avec la "bibliothèque de classes" sans succès, mais la suppression de ce projet et la création d'un nouveau modèle à partir du modèle de "projet de test unitaire" est devenue avec le Microsoft.VisualStudio.QualityTools.UnitTestFramework version 10.0.0.0 installé.