2017-09-29 1 views
0

J'ai deux paquets NuGet. Package One et package Two. Le package deux doit avoir une dépendance en tant que Package One version 1.0 ou ultérieure.NuGet ignorant la version plus récente de la dépendance

J'ai apporté une petite modification à Package One et reconstruit le package NuGet à la version de 1.0.1. Je n'ai apporté aucune modification au package Package Two NuGet. J'ai également mis à jour Package One dans la solution dans laquelle je travaille.

Le problème que je rencontre est que Package Two essaie toujours de rechercher le fichier .dll de Package One de la version 1.0, une ancienne version. Pourtant, il y a la version plus récente déjà installée et disponible à utiliser, c'est comme si elle l'ignorait.

Le package deux a la dépendance de la version 1.0 ou supérieure de Package One dans le fichier package.nuspec.

Y at-il un moyen de résoudre ce problème?

+0

Que diriez-vous cette question? L'avez-vous résolu? Sinon, faites-le moi savoir, je continuerai à le suivre. –

+0

@ Leo-MSFT Oui, j'ai réussi à le réparer. Désolé pour la longue réponse, je n'ai pas pu utiliser le vôtre ou la réponse de Matt car je n'ai pas été affecté à un travail lié à Nuget pendant un moment. –

Répondre

1

Est-il possible de résoudre ce problème?

Tout comme Matt a répondu « Ceci est le comportement par défaut de NuGet »:

Avec NuGet 2.5 et versions ultérieures, si une version de dépendance est déjà satisfaite, la dépendance est pas mis à jour au cours d'autres installations de paquets.

So 1.0 est une résolution de dépendance par défaut correcte.

Depuis NuGet v2.8, nous pourrions utiliser d'autres algorithmes de résolution de dépendance:

Bien que NuGet 2.8 modifie le comportement par défaut pour résoudre dépendances, il ajoute également un contrôle plus précis sur le processus de résolution dépendance via le commutateur de -DependencyVersion dans le paquet console du gestionnaire. Le commutateur permet de résoudre les dépendances à la version la plus basse possible (comportement par défaut), la version la plus élevée possible ou la version mineure ou corrective la plus élevée.

Les informations détaillées sur les ces algorithmes de résolution de dépendance, s'il vous plaît vérifier ci-dessous document:

https://docs.microsoft.com/en-us/nuget/tools/ps-ref-install-package

enter image description here

Pour résoudre ce problème, vous pouvez utiliser ci-dessous commande dans la console Package Manager :

Install-Package PackageTwo -DependencyVersion Highest 

Ou je l'ai choisi de gérer l'interface utilisateur du package NuGet en dépensant options:

enter image description here

1

C'est le comportement par défaut de NuGet où il va installer la version de correctif la plus basse d'une dépendance.

https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution

Vous pouvez remplacer globalement pour NuGet.Config, par exemple:

<add key="DependencyVersion" value="HighestPatch" /> 

Vous pouvez préciser lors de l'installation du package NuGet dans Visual Studio.

Sinon, il vous reste à modifier Package 2 pour dépendre de la version 1.0.1 de PackageOne, ce qui n'est probablement pas ce que vous voulez faire puisque Package Two fonctionnera toujours avec l'ancienne version de Package One.