Comment installer localement un fichier .nupkg de package NuGet?

Réponses:

465

Outils de menu → OptionsGestionnaire de packages

Entrez la description de l'image ici

Donnez un nom et un emplacement de dossier. Cliquez sur OK. Déposez vos fichiers de package NuGet dans ce dossier.

Accédez à votre projet, faites un clic droit et sélectionnez "Gérer les packages NuGet" et sélectionnez votre nouvelle source de package.

Entrez la description de l'image ici

Voici la documentation .

Shyju
la source
22
En fait, j'ai fait l'étape 1 plusieurs fois. Mais mon package n'apparaît pas à l'étape 2, lorsque je l'ouvre pour afficher les packages installés, les mises à jour ou les packages récents.
Tom
2
Sur mon écran, je n'ai que "Tous" sous "Packages installés" et non la "Source du package officiel NuGet", pas mon "newNuget" personnalisé, ils sont manquants.
Tom
1
J'utilise vs2010. Essayer de télécharger et d'installer le dernier nuget à partir de leur page d'accueil en ce moment. Télécharger cliquez sur suivant suivant ... puis erreur ... M $ comme prévu, il existe un lien vers des problèmes connus, vérifié que, dit non-concordance de signature, puis je dois désinstaller le nuget existant et c'est une solution facile. bien, fais ça. Lorsque je redémarre l'ordinateur et que je l'installe à nouveau, la même erreur revient, la différence de signature ... alors maintenant je suis coincé avec l'ancienne version disparue, la nouvelle version ne veut pas installer.
Tom
2
Problème résolu. J'ai désinstallé nuget de Windows -> panneau de configuration. Cela n'a pas fonctionné de cette façon. J'avais besoin de démarrer VS et d'aller dans Tools-> Extension Manager ... puis de désinstaller nuget à partir de là. VS redémarré. Ensuite, je suis allé installer nuget à nouveau, cela a fonctionné. Maintenant, les fichiers locaux nupkg s'affichent également (modifier: ils sont dans l'onglet En ligne, pas dans l'onglet Installé, mon erreur dans l'image que je poste). Merci pour l'aide :)
Tom
1
Je n'ai pas encore assez de réputation pour commenter - mais pour répondre à Michael dans la réponse acceptée, les commentaires sur VS2015 veulent toujours aller en ligne. J'ai eu le même problème, mais dans les options, si vous décochez toutes les sources en ligne, cela fonctionne pour les sources hors ligne. nuget Options pic
Mick m
302

Vous pouvez également utiliser la console du gestionnaire de packages et appeler la Install-Packagecmdlet en spécifiant le chemin d'accès au répertoire qui contient le fichier de package dans le -Sourceparamètre:

Install-Package SomePackage -Source C:\PathToThePackageDir\
Enrico Campidoglio
la source
2
puis-je faire quelque chose comme ça avec l'outil de ligne de commande?
Poul K. Sørensen
5
Oui. L' -Sourceoption est également disponible dans nuget.exe . Par exemple:nuget install SomePackage -Source C:\PathToThePackageDir
Enrico Campidoglio
16
Vous devrez peut-être également spécifier l'indicateur -IncludePrerelease. Sinon, si la version du package a un suffixe de tiret (par exemple "-beta1"), Install-Package ne le trouvera pas.
Jeff Sharp
9
C'est une réponse beaucoup plus directe que celle acceptée. Merci pour l'info!
David Peters
2
Ne fonctionne pas pour VS 2017, voir f.ex. répondre par @Granger.
RenniePet
124

Pour les fichiers .nupkg que j'aime utiliser:

Install-Package C:\Path\To\Some\File.nupkg
Felix Alcala
la source
7
La seule chose qui a fonctionné. Si le chemin d'accès au répertoire contient des espaces, incluez-le entre guillemets.
Nikos
4
Se mettre d'accord. Et il convient de mentionner que seuls les chemins absolus fonctionnent
Sebastian J.
5
Ne fonctionne pas pour VS 2017, voir f.ex. répondre par @Granger.
RenniePet
1
@RenniePet qui a fonctionné pour moi dans VS2017 (mais j'avais déjà placé mon .nupkgsous le même répertoire tous les autres paquets ont été stockés)
Rafalon
1
Cela ne fonctionne pas pour moi, j'utilise VS2013 version 12.0.21..5 et le gestionnaire de paquets Nuget 2.12.0.817 :(
Niraj Trivedi
56

Pour Visual Studio 2017 et son nouveau format .csproj

Vous ne pouvez plus simplement utiliser Install-Package pour pointer vers un fichier local. (C'est probablement parce que l' PackageReferenceélément ne prend pas en charge les chemins de fichiers; il vous permet uniquement de spécifier l'ID du package.)

Vous devez d'abord indiquer à Visual Studio l'emplacement de votre package, puis vous pouvez l'ajouter à un projet. La plupart des gens vont dans le gestionnaire de packages NuGet et ajoutent le dossier local comme source (menu OutilsOptionsGestionnaire de packages NuGetSources de packages ). Mais cela signifie que l'emplacement de votre dépendance n'est pas validé (pour le contrôle de version) avec le reste de votre base de code.

Packages NuGet locaux utilisant un chemin relatif

Cela ajoutera une source de package qui ne s'applique qu'à une solution spécifique et vous pouvez utiliser des chemins relatifs.

Vous devez créer un nuget.configfichier dans le même répertoire que votre .slnfichier. Configurez le fichier avec la ou les sources de package souhaitées. Lorsque vous ouvrirez la solution dans Visual Studio 2017, tous les fichiers .nupkg de ces dossiers source seront disponibles. (Vous verrez les sources répertoriées dans le gestionnaire de packages et vous trouverez les packages dans l'onglet "Parcourir" lorsque vous gérez des packages pour un projet.)

Voici un exemple nuget.configpour vous aider à démarrer:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="MyLocalSharedSource" value="..\..\..\some\folder" />
    </packageSources>
</configuration>

Passé

Mon cas d'utilisation pour cette fonctionnalité est que j'ai plusieurs instances d'un référentiel de code unique sur ma machine. Il y a une bibliothèque partagée dans la base de code qui est publiée / déployée en tant que fichier .nupkg. Cette approche permet aux différentes solutions dépendantes de notre base de code d'utiliser le package dans la même instance de référentiel. En outre, quelqu'un avec une nouvelle installation de Visual Studio 2017 peut simplement extraire le code où il veut, et les solutions dépendantes seront correctement restaurées et construites.

Granger
la source
J'utilise VS 2017 et je n'ai pas rencontré ce problème. Je viens de passer l' -Sourceargument à Update-Packageet cela a bien fonctionné. Peut-être quelque chose à voir spécifiquement avec la Install-Packagecommande?
Greg Burghardt
48
  1. Ajoutez les fichiers dans un dossier appelé LocalPackages à côté de votre solution (il n'est pas nécessaire de l'appeler ainsi, mais ajustez le xml à l'étape suivante en conséquence)
  2. Créez un fichier appelé NuGet.config à côté de votre fichier de solution avec le contenu suivant

    <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <add key="LocalPackages" value="./LocalPackages" />
        </packageSources>
        <activePackageSource>
          <!-- this tells that all of them are active -->
          <add key="All" value="(Aggregate source)" />
        </activePackageSource>
     </configuration>
  3. Si la solution est ouverte dans Visual Studio, fermez-la, puis rouvrez-la.

Maintenant, vos packages doivent apparaître dans le navigateur, ou être installables à l'aide de Install-Package

Samuel Jack
la source
Une réponse fantastique, exactement la solution que je cherchais. Merci!
Jonathan
1
Cela peut simplement être dû au fait que j'ai un package portant le même nom qu'un sur le référentiel Nuget, mais je devais utiliser la console du gestionnaire de packages et sélectionner la source du package en tant que LocalPackages avant d'exécuter Install-Package.
Luke
42

Si vous avez un fichier .nupkg et que vous avez juste besoin du fichier .dll, tout ce que vous avez à faire est de changer l'extension en .zip et de trouver le répertoire lib.

Marlon Cristian
la source
3
si vous le traitez comme un fichier zip, les fichiers ayant un espace dans le nom de fichier seront extraits avec% (en remplaçant les espaces). Pour éviter cette installation à l'aide de NuGet.
Rahatur
2
En fait, vous n'avez même pas besoin de renommer l'extension. Cliquez simplement avec le bouton droit sur le fichier, puis choisissez Ouvrir avec et recherchez une application qui peut ouvrir le fichier .zip, et le fichier .nupkg peut être ouvert, puis vous pouvez extraire le fichier dll nécessaire dans votre dossier désigné.
jyao
1
Meilleure solution dont j'ai besoin
Leo Nguyen
8

Juste pour donner une mise à jour, il y a des changements mineurs pour les utilisateurs de Visual Studio 2015.

Pour utiliser ou installer le package manuellement, accédez à Outils -> Options -> NuGet Package Manager -> Sources du package

Cliquez sur le bouton Ajouter, choisissez la source et n'oubliez pas de cliquer sur " Mettre à jour " car cela mettra à jour l'emplacement du dossier pour vos packages, modifiez le nom de votre source de package si vous le souhaitez:

entrez la description de l'image ici

Pour choisir votre package ajouté, faites un clic droit sur votre solution et sélectionnez " Gérer les packages Nuget "

La liste déroulante est à droite et choisissez Parcourir pour parcourir vos packages que vous avez spécifiés sur la source de votre dossier. S'il n'y a pas de paquet nuget sur cette source de dossier, ce sera vide:

entrez la description de l'image ici

Willy David Jr
la source
6

Sous Linux, avec NuGet CLI, les commandes sont similaires. Pour installer my.nupkg, exécutez

nuget add -Source some/directory my.nupkg

Exécutez ensuite à dotnet restorepartir de ce répertoire

dotnet restore --source some/directory Project.sln

ou ajoutez ce répertoire en tant que source NuGet

nuget sources Add -Name MySource -Source some/directory

puis dites msbuildd'utiliser ce répertoire avec /p:RestoreAdditionalSources=MySourceou /p:RestoreSources=MySource. Le deuxième commutateur désactivera toutes les autres sources, ce qui est bon pour les scénarios hors ligne, par exemple.

user7610
la source
1
Sur mac (je suppose que Linux aussi), vous ne pouvez pas compter sur nuget sourcessi vous utilisez dotnet restore(ou VS Mac ) à cause de ce bogue. J'ai dû ajouter la source locale au ~/.nuget/NuGet/NuGet.Configmanuellement (voir ce numéro GH ).
gabe