web-dev-qa-db-fra.com

Le meilleur moyen d’ajouter des packages NuGet en tant que référence de projet dans VS2012?

D'accord. Très brève question, je suis probablement juste épaisse. 

Si vous cliquez avec le bouton droit de la souris sur le dossier "Références" d'un projet, puis sur "Gérer les packages NuGet", vous pouvez ensuite installer les packages. Ils sont automatiquement référencés par le projet sur lequel vous avez cliqué. Mais ensuite, je souhaite ajouter la même référence à d’autres projets dans la même solution. Si vous répétez précédent mais que vous cliquez sur un autre projet, la seule option est de désinstaller le paquet (car il est déjà installé), quelle est la bonne façon d’ajouter un paquet NuGet existant (déjà installé) comme référence de projet? Dois-je ajouter la référence à l'aide de la boîte de dialogue normale et "parcourir" la DLL dans le dossier des packages? Utilisez une méthode pour ajouter la première référence puis une autre pour les références suivantes? Cela ne semble pas juste. 

59
Nine Tails

Vous pouvez utiliser Manage NuGet packages for Solution... en:

  • clic droit sur la solution
  • Tools > Library Package Manager > Manage NuGet packages for Solution

Ensuite, vous pouvez choisir dans quel projet installer le paquet comme sur la capture d'écran ci-dessous: enter image description hereDe plus, vous pouvez ajouter un package installé à un autre projet de la solution en utilisant le même Manage NuGet packages for Solution....enter image description here

83
Pavel Bakshy

L'autre réponse ici ne m'a pas aidé. Voici ce que j'ai fait, je ne connais pas d'autre moyen de le faire. J'utilise VS 2013. 

  • J'ai installé le package dans la console du gestionnaire de packages, par exemple .PM> Install-Package Newtonsoft.Json
  • Dans l'Explorateur de solutions, cliquez sur références avec le bouton droit de la souris, sélectionnez Ajouter une référence.
  • Cliquez sur Parcourir, puis accédez à la DLL située dans le répertoire packages sous le dossier de la solution.

Cela ajoute un chemin relatif pour la référence au projet. Cela devrait donc fonctionner avec d'autres personnes qui extraient le code du contrôle de source dans des répertoires différents.

18
kristianp

J'ai eu le même problème. La solution publiée par kristianp a fonctionné comme prévu, mais elle peut être un peu fastidieuse si vous utilisez beaucoup de paquets. La solution qui a fonctionné pour moi consistait simplement à éditer le fichier myProjectName.csproj dans le bloc-notes et à copier-coller les références d'un autre projet comme suit:

...

<ItemGroup>
    <Reference Include="Microsoft.AspNet.SignalR.Core">
      <HintPath>..\packages\Microsoft.AspNet.SignalR.Core.2.1.2\lib\net45\Microsoft.AspNet.SignalR.Core.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AspNet.SignalR.SystemWeb">
      <HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.1.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath>
    </Reference>

    ...

J'espère que ça aide quelqu'un. Cela m'a évité beaucoup de cliquer :)

1
Jan W

Aujourd'hui, j'utilise la Console du gestionnaire de packages} _ (Affichage-> Autres fenêtres-> Console du gestionnaire de packages).

Les deux commandes suivantes suffiront sans doute:

install-package <package-name> [-version <version-number>] [-project <project-name]

et

update-package <package-name> [-reinstall] [-version <version-number>] [-project <project-name>]

  • Les parties entre crochets [] sont facultatives.
  • 'install-package' installera le projet spécifié ou, s'il n'est pas spécifié, celui sélectionné dans la liste déroulante "Projet par défaut" en haut de la fenêtre de commande.
  • 'update-package' appliquera les modifications à chaque projet sauf si un projet est spécifié.
  • '-reinstall' signifie désinstaller puis réinstaller le paquet sous le même numéro de version.

Au début, je pensais que le comportement de ces commandes était un peu bizarre, mais avec l'expérience, je constate qu'elles sont très utiles. Bien que personnellement, je laisse tomber le menu "Projet par défaut" entièrement.

0
Nine Tails