web-dev-qa-db-fra.com

"Impossible de trouver la version" pendant TFS Build 2015 lors de la restauration de paquets NuGet

J'ai des problèmes avec la restauration du paquet NuGet lors d'une TFS Build 2015.

Certains packages nécessitant un client NuGet 3.x, j'ai configuré la nouvelle version scriptable pour utiliser un emplacement NuGet personnalisé où j'ai placé l'exécutable de NuGet Command-Line 3.x beta .

Chaque fois que j'exécute une construction, tous les packages ne peuvent pas être restaurés et NuGet affiche le "Impossible de trouver la version ..." error:

Unable to find version '1.1.10' of package 'Microsoft.Bcl'.
Unable to find version '4.0.10' of package 'System.Threading'.
Unable to find version '1.1.37' of package 'System.Collections.Immutable'.
Unable to find version '1.0.0' of package 'Owin'.
Unable to find version '4.1.0' of package 'NLog'.
Unable to find version '7.0.1' of package 'Newtonsoft.Json'.
Unable to find version '2.0.1' of package 'MongoDB.Driver.Core'.
Unable to find version '2.0.1' of package 'MongoDB.Driver'.
Unable to find version '2.0.1' of package 'MongoDB.Bson'.
Unable to find version '3.0.1' of package 'Microsoft.Owin.Security.OAuth'.

... et encore plus de forfaits. Je crois que le problème est clair.

Lorsque je crée la même solution sur la machine de génération à l'aide de Visual Studio, tous les packages sont restaurés avec succès.

Comment résoudre ce problème?

17

Dans mon cas, le problème était que NuGet.config situé à C:\Users\[User name]\AppData\Roaming\NuGet\NuGet.config (où [User name] correspond à l'utilisateur qui exécute le service Windows de l'agent de génération), point à l'échelle de l'utilisateur, pointait vers l'API NuGet v2 alors que ma version utilisait déjà NuGet Command-Line 3 .X.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <!-- CHANGING V2 TO V3 IN THE URI VALUE SOLVED THE ISSUE! -->
    <add key="nuget.org" value="https://www.nuget.org/api/v3/" />
  </packageSources>
</configuration> 
22

Dans mon cas, le Nuget.Config était dans:

C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\NuGet

Donc, recherchez Nuget.Config dans votre C:\.

L'utilisateur dépend du compte que vous avez configuré le Agent

3
willianleite

Si pour une raison quelconque, la mise à jour du NuGet.config dans le dossier Roaming n'est pas une option ou si vous le souhaitez, vous pouvez également ajouter le fichier de configuration à la racine de la solution.

Selon les docs: 

  • Fichiers NuGet.Config spécifiques au projet situés dans n’importe quel dossier, du dossier de la solution jusqu’à la racine du lecteur. Celles-ci permettent de contrôler les paramètres tels qu'ils s'appliquent à un projet ou à un groupe de projets.
  • Un fichier NuGet.Config spécifique à la solution situé dans un dossier .nuget de la solution. Les paramètres de ce fichier s'appliquent uniquement aux packages à l'échelle de la solution et sont pris en charge uniquement dans NuGet 3.3 et versions antérieures. Il est ignoré pour NuGet 3.4 et versions ultérieures.

Emplacements et utilisations des fichiers de configuration

1
Emiel Koning